I recently switched from an iPhone 3G on AT&T to a T-Mobile G1 running Google's Android. There were several reasons for this:
1. I'm not very impressed with AT&T's 3G service. I've had a lot of problems with it; I've had to call AT&T 3 times in the last year to report bad 3G performance at my work place. In every case it was a problem on their end, but I had to fight my way through probably 45 minutes to 2 hours of reboots and network settings resets before I could convince them of this. Also, AT&T's service is quite a bit more expensive than T-Mobile's or Sprint's. But this is the least important of my concerns.
2. The iPhone hardware is very closed. You can't replace the battery yourself, you can't use your own memory card. It seems like planned obsolescence to me. However, given the beauty of the iPhone hardware, this isn't the major concern either.
3. Apple's hamfisted control of their software was really pissing me off. If I want a better mp3 player than iTunes I should damn well be able to pay for it and get it, not be stopped by app store policies against apps that "duplicate" functionality.
4. The iPhone OS is very unsophisticated. Looks kinda pretty, right? But the paradigm is pretty much Windows 3.1; colored icons in neat rows which you have very little control over.
Worse, no multitasking. Frankly, I think this is unforgivable. The machine is a computer running UNIX, for God's sake. And why can't I use a USB or wireless keyboard with the iPhone? And why can't I mount the phone's storage on a computer and store some documents to carry around with me? And why can't I play OGG or FLAC files? Or videos other than a very narrow range of MPEG 4 types?
5. The OS issues in item 4 could be easily solved by third party developers, and in fact, they mostly have been. But ... Apple doesn't want you to be able to make changes to the low-level OS, however much you want them, and however much you have paid for the damn phone. Some long-suffering developers have figured out various clumsy solutions to get around this, but it's difficult to do, and every time they work out a way to do it, Apple comes up with a "fix" that breaks it. It got to be really painful to "jailbreak" the phone over and over again.
Android has it's own problems, and is not as slick as the iPhone OS yet (I hesitate to call the iPhone OS "MacOSX" when it can't even multitask!). But Google and the Open Handset Alliance are not nearly as closed to third-party development at the OS level as Apple is, and modified OS installs are easily available. And updates to the OS are not going to cause me to have to wipe my phone and start over every time.
Also, switching to T-Mobile is an investment in both money (cheaper) and freedom, since T-Mobile's 3G implementation is more compatible with European standards than AT&Ts. I'll have more options in phones, in other words. Kinda lusting after the Nokia N900, to tell the truth, which will run 100% on T-Mobile.