Rather than pointing out all the things that caused me to switch to iOS after 6 Android phones in 3 years, I will list what Google, the manufacturers and carriers can do to win some of us back.
First and foremost, fix the fragmentation bullish*t already, its been FAR too long. Google announced a year ago that they partnered with Samsung, HTC, Motorola and LG as well as the 4 major carriers to guarantee support of phones for at least 18 months and they were supposed to set a timeframe for the carriers to release the new OS. Well here we are a year later, ICS has been out for 5 months...where is it? Only 3% of Android phones are running it, pathetic. Just fix it. Get every phone within the last year updated to ICS before your greedy asses release another handset to turn a profit. Require all carriers to update existing phones to the new OS within 60 days, thats reasonable.
Next, and I know this is going to rile up the Fandroids and have them crying about too much control but Google needs to crack down on the market. Require apps to be tested and then approved before they can be uploaded to the market/store. Anyone can created an app and throw it in the store, many are poorly written which lead to battery drain and more malicious ones are turning up. Look thru the store and read the comments, you will see comments about an app not working with certain phones but other phones run it just fine. Moderate it and clean it up.
Thats a good start...