Just wanted to chime in, I am one of the founders of ridewithgps.com so am obviously biased

However, when we take your logfile from your phone and process the elevation gain/loss numbers, we put it through some pretty decent math to try and be as accurate as possible. I believe ours is definitely the best out there, but there is always room for improvement (it's a really hard problem to get right even 90% of the time). If you want to look at the math and some graphs, I wrote about it a while back on my blog:
http://cullenking.com/2009/6/12/usin...elevation-data
The one limiting factor in accuracy you will find though, is your android device itself. It uses a GPS chipset to determine elevation values, which is really inaccurate. In fact, it's not uncommon to have a GPS altimeter be off by 30 feet in either direction. This leads to inflated gain/loss values that are hard to correct for, and is the reason people prefer using the Edge 305/500/705 units - they have a barometric pressure based altimeter which is much more accurate.
The one thing that people don't talk about much, but is definitely important is to instead of having a perfectly accurate idea of elevation gain/loss, have a consistent idea of elevation gain/loss. So, if you use ridewithgps regularly and we say 4000 feet vs someone else saying 3000 feet, as long as both services are consistent in how much they are "off" by, you'll be ok, because you'll know what ridewithgps 4000 feet or 3000 feet should feel like.