All these tips and tricks are panaceas. Universally, if you are getting battery life where it dies in your pocket after 8 hours, then your phone is not sleeping...period. There is no point in turning of Wifi, GPS, setting Mobile Data Always On to Off, or any of this until you resolve the issue. If your phone is not sleeping, battery life is going to suck. Check your Awake Time vs Up time and you'll see that I am right. Task Killers are mostly useless, though I do use one occasionally if I find a rogue process. Get System Panel Lite, and look at Battery History for Partial Wake Lock. In some cases, it's an actual application doing it. In most cases, it's Android System. I had an issue where everything was fine, but after 24-48 hours Android System would start to Wake Lock, the phone would get hot in my pocket, and the battery would drain at an astronomical rate. I never resolved that issue. In the past, Calendar and Facebook have been the culprits, but those have since been fixed.
FroYo seems to have resolved all the Android System Wake-Lock problems for me. I don't recommend that everyone root their phone and install a new ROM, but if you are comfortable with it, FroYo is a vast improvement. For example, yesterday, I unplugged my phone at about 8AM after which the battery *quickly* drains to 90%. I don't bother with the bump charging, though that does certainly give you a bit longer life. I was on WiFi all day, used about 1.5 hours of web browsing (some of which was Flash based), spent about 30 mins on the phone, and spent some time emailing plus 30 mins of Google Listen usage. This is not heavy usage by any stretch, but is typical for me. When I plugged it in at midnight, it had 50% battery. My Up time is 143:31:00 and my awake time is 19:57:00. I have noticed that my phone is awake about 1-1.5 hours a day without touching it, so that means I have been actually using my phone for a solid 2 hours a day on average.
Let me repeat. If your battery is dying after a few hours, you have a wake lock issue. Try a factory reset - if that doesn't fix it, call HTC.