I too was unhappy with my 3GS battery life, but now it is really good. I let the 3GS die twice and recharged it to full. Now, I just top it off after I hit about 30%. I also turned off 3G, notifications and bluetooth. I turn them on when I need them. My latest numbers are:
Battery: 41%
Usage: 5 Hours, 14 Minutes
Standby: 1 Day, 3 Hours (e.g. 27 hours)
Call Time: 28 minutes
I use wi-fi at home all the time, and only turn on 3G when needed out of the home.
In a perfect world, I could have all services on and get the same battery life. It is not a perfect world, and I make compromises based on what is important to me.