There are a lot of sites out there on problems with the battery on the iPhone 3G and most of them are helpful. However after trying all of the solutions with my iPhone yesterday I was still having an issue where the battery was draining in under 4 hours. This problem started yesterday morning and nothing seemed to have transpired that would seem to be the root cause of the problem (I didn't change any settings and I didn't add any new software). I finally found a solution by doing the following. This assumes that you have a Microsoft Exchange account setup in push mode.
1) Write down the settings for the exchange account.
2) Delete it within the iPhone settings.
3) Reboot the phone.
4) Add it back.
This stopped the battery drain and everything is back to normal. It seems that somehow the account was erroring and it was polling the exchange server ALL THE TIME thus using the battery up very quickly.