In a nutshell? An iPhone 3G running 2.0 or 2.0.1 tries to pull too much power from the network, so when multiple iPhones connect, a tower can actually run out of juice and start dropping calls and losing data.
Why hasn't upgrading to 2.0.2 already fixed the problem? Simple: some people haven't yet upgraded, so their 2.0 and 2.0.1 iPhones keep pulling too much power, causing the same problem even for people who have upgraded but are stuck on the same tower (or same high-density city like San Fran or NY). Only when most users have patched to 2.0.2 will people stuck on high-demand towers see improvements.
Earlier reports and theories have lain blame on everything from the 3G radio and antenna, to the Infineon chipset and Apple firmware, to the carriers themselves. We here at TiPb have long been saying the problems were likely a combination of factors, and firmware that pulls too hard on networks that aren't that hardy seems a far better explanation than any one previously offered. It also goes a long way to explaining why Bluetest didn't find any hardware issues, and why both Apple (via their website) and AT&T (via SMS) have really stepped up the push for this update.
So, do we finally have our answer, or is this just the next "shot in the dark"? Are you still having 3G problems? Is your neighbor still on 2.0 or 2.0.1? Tell them to upgrade now and then let us know if it helps!