I upgraded to the iPhone 4 last spring, but I kept the 3GS around for use on my boat. The Navionics app stores all the charts in memory, so even if you have no wireless service connected to the phone, you still get a chart and GPS positioning. It worked great ... until it stopped holding charge.
I took it to the Apple store for repair and they said that due to the fact that the battery had inflated, there was no way to repair it or put a new battery in it. You could actually see stretch marks on the back of the engorged phone's casing that had appeared overnight while I was trying to charge it.
When I took the phone apart, here's what the battery actually looked like!
This is apparently a known problem with pouch batteries, but there is no definitive cause for the failure.