I seem to relay this trick to someone every day: Don’t keep your AT&T iPhone on the 3G network; instead, keep it on the Edge “E” network by turning off 3G.
I learned of this trick a few months after I got my first 3G iPhone. I dropped about 6 calls in one hour and was furious. This was back in mid-2009. I called AT&T, and the operator said something like: “OK, I’m not supposed to tell you this, but just keep your phone on the Edge network for calls. You won’t drop them.” She was right.
When I’m off WiFi and I need data juice, I switch over to 3G, but my default within WiFi environments (like home, office, etc.) is to keep on the Edge network and turn cellular data off. Works like a charm. I only drop 1 call per month, at most.