Gaia GPS has been my go-to for several years; others have already covered Gaia pretty well in this thread.

While I still love and use Gaia, I recently started using CalTopo.com more. It isn't as polished as Gaia but has some features that make it more useful in some circumstances:
  • Printing Ability - CalTopo allows you to print maps in any scale and datum directly on your computer as well as send them to Mountyn.co Mountyn.co for professionally printed maps. With Gaia, the printed maps are similar to Google Map printouts, and you cannot print them to a specific scale without a lot of trial and error. For many, this will be a non-issue; however, if you want to print paper maps to use with a GPS, GAIA fails here.
  • Geospatial PDFs - GAIA doesn't allow the import or creation of Geospatial (georeferenced PDFs). Again, for most users, this isn't a required feature. For others, this gives CalTopo the ability to use maps from many sources that produce GeoPDFs, AND CalTopo can create GeoPDFs for sharing.
  • Less built-in map sources, but more data. GAIA dominates the market on map and imagery sources. CalTopo has fewer sources but has some unique data available to the paid user; fire activity (including real-time fire and smoke detection), weather, wind plotting, and sun exposure, to name a few.

For many, Gaia will still win, but CalTopo is worth looking at if you want some more "professional" features.
_________________________
"Trust in God --and press-check. You cannot ignore danger and call it faith." -Duke