Any word on how this functions on older 3g and 3gs hardware? I've been waiting to upgrade my 3g due to reports of severe slowness on 3g+ios4.
4.0.1 doesn't look like it has much improved on the situation (apart from the psychological trick of "new release = faster", and the fact that freshly booted phones are less memory-constrained since Mail and Saf's background processes aren't running yet) so far.
Unless you need iOS4 features (or iOS4-only apps), i would recommend staying on 3.1
That being said, maybe my understanding of how iPhone updates happen is a little flawed. I'm not too clear if it wipes your phone clean and then resyncs everything after the update. Or does it keep your data on the phone during the upgrade?
Overall, 4.0 was not a good upgrade for the 3G.