If your Android phone is suffering from suboptimal battery life, you may be suffering from suspend_backoff problems. This happens when the phone is woken up by applications in quick succession, so it decides to keep the phone awake for a little while. For example, there is data to be sent over WiFi, so the WiFi connection is kept awake, which keeps the phone awake.
To detect suspend_backoffs, use Wakelock Detector. The application has several screens that report on what causes your phone to wake up.
One good solution that helped extend my battery life was JuiceDefender Plus. It is not free, but worth the money for sure. Make sure you enable advanced features, and enabled a schedule, where the phone will sleep for 15 minutes, then wake up for 30 seconds to check WiFi. Also, make the phone not turn on data from, say, 1 am to 7 am to conserve battery even more.
If you have a Sony phone, then Sony's Account Manager's update on March 17th also contributed to reduced wakelocks.
Right now, I am able to use only 20% of the battery per day with little use, mostly standby time. This means 5 days on a single charge!
Here is a screenshot: