I've used garmin connect for my tracking, both using cell phone tracking apps, and a proper GPS watch. GPS on it's own is able to determine your elevation (remember it's triangulating or multi-angulating off satellites, so it measures how far you are away from each satellite, and calculates where the spheres line up).
Nevertheless, garmins website corrects for elevation using USGS data (as far as I know)... So it SHOULD be calculating for actual speed on the slope, not just horizontal speed.
That said, and I've said it before: Phone GPSs suck. STOP COMPARING TOP SPEEDS! In my experience, phones seem to vastly over estimate the top speed for the day, and it's wildly inaccurate. I experienced 10-20 km/h
swings in top speed from day to day.
After switching to a GPS watch, my speeds dropped to a more reasonable level, and the difference between days on the same hill dropped to about 5 km/h (which seems reasonable to me).
GPS phones are great ways of tracking total distance, and number of runs for the day, as well as showing your buddies the route you took if you split up. But I think they're useless for comparing top speed...