You need to map your GPS track onto a DEM or equivalent and then get the climb estimate from there.
For my Patapsco/Green course yesterday, my Garmin said 1,015 meters of climb. The climb based on mapping to a DEM was 363 meters.
I used GPS Visualizer to convert my track from a gpx file to a kml file and then uploaded it to Google Earth. When I used BaseCamp my distance was 7.7 miles and climb of 3,460 ft. Using Google Earth I now get a reading of 7.27 miles and 1,941 feet of climb, which seems closer to reality.
What's your general take on Google Earth? Is there a better utility out there for this sort of task?