From my observations with my iPhone 4S, it's not a hardware problem or even a battery problem, but a calibration problem. That can be easily seen by looking at the images on the first page of this thread where the person had 90 minutes of usage while staying at 1%.
Here's things I've seen that make me think the iPhone is simply reporting the wrong battery status at times (all of these were with 5.0.1 on an iPhone 4S AT&T):
1. Battery shows 96% and plug icon. In other words the phone thinks it's fully charged at 96%. When I turned the phone off and on, that jumped to 98%. I then did a reset and charged up to 100%. I've only seen this once.
2. Phone stays on when it hits 1% and remains on for a long time despite a lot of use (including GPS, wifi, gaming, etc).
3. Phone shows 100% a/c after charge and immediately drops to 97% when unplugged.
All of those tell me it's not a battery problem, but a problem with accurately reporting the battery status.
Though I've also seen phantom usage where the phone says I've been using it for much longer than I have when there wasn't a lot of background usage (push, mail, iCloud, etc).
I've also seen cases, like today, where I was at work and checked my phone and it was still at 100% battery, despite 3 hours of standby and a few minutes of usage. The phone didn't have any phantom usage today. Currently the battery is at 78% battery with 1 hour and 40 minutes of usage and 15 hours and 25 minutes of standby. Yesterday, my phone hit 78% battery after about an hour of usage and 5 hours of standby. A few weekends ago I was at 38% battery with 2 hours and 54 minutes of usage and 2 days and 14 hours of standby.