I think that's just the way the iPhone is. If we could run the 3G function on our T-Mobile running iPhones we wouldn't be having this problem =P
I started having the same problem since the 3.0 update (I'm not even gonna bother with 3.0.1 as it only updates the SMS vulnerability). I'm just waiting for the next update and hopefully the problem will be fixed.
If you really can't stand it maybe trying to downgrade back down to 2.2.1 would help xD But I wouldn't go through that hassle, that's just me.