After upgrading my girlfriend's iPhone 3G to OS 3.0 recently, I noticed that the iPhone's battery was getting depleted really quickly. I'd left it overnight with Wifi, 3G, Bluetooth, Push Notifications all off, and the battery went from 80% to a jaw-dropping OMGWTFBBQ 10%.

I attributed it to the recent jailbreak (I've already removed the jailbreak trying to figure out this problem) at first. I only realized something was really wrong when the iPhone's battery started draining while it was charging via USB!

Looking around on teh interwebs, I managed to solve it (easily!) by following the suggestions from this thread at the Apple support forums. Here's what worked for me:

  1. Go to Settings on your iPhone.
  2. Turn Notifications off. I'm not sure if this is necessary but did so just in case.
  3. Go to Mail, Contacts, Calendars and delete all your accounts (I deleted even Calendar accounts just in case). You may want to write down or backup your account settings first.
  4. Go to Fetch New Data (also in the same Mail, Contacts, Calendars settings) and make sure Push is Off.
  5. It's probably not necessary but you may want to restart your iPhone (power it on and off) here.
  6. Add back all your accounts. You can turn Push back on Fetch New Data now.
  7. You can also turn Notifications back on if you wish.

It seems like the iPhone 3.0 OS update has a bug where email accounts with active push notifications were set to keep fetching new email even if push is turned off explicitly. Hopefully this post will help solve your battery problems, if not, you've gotta keep looking - the Apple iPhone Support forums is a good place to start.