I have been using my Garmin 60Cx. It has a setting to log to a .gpx file on the memory card. This can be done based on time, distance, or just a generic frequency.
I have tried two different programs, I like both and they both work very well. GPicSync, and GeoSetter. Both are free, both have some different options. GeoSetter has more features and options, GPicSync seems faster to process the images.
You can also use any phone with GPS, just find a program that gives you a .gpx file, or a Google .kml file. I think both the above programs will take inputs from those files.
GPSBabel is also another handy free program, if you need to convert from different file types. Can also be used to download from GPS units. On my 60Cx, waypoint markers arent saved to the GPX file, only to its regular track log. GPSBabel will combine the two.
Beware that some phone logging programs might need a data connection on the phone to work, and that phones are always less accurate and have higher power consumption than a quality handheld GPS or one of the little loggers. My 60Cx will go for 20+ hours of high frequency logging on a pair of AAs, in addition to actual navigation use.
If you are an outdoors kind and take a lot of pictures while you hike, a dedicated handheld unit will always work better than a phone, with the mini trackers coming in second IMHO. Phones are a distant third (very distant in my experience). Ive tried using my Blackberry to log, it loses GPS reception as soon as a tree is nearby. The 60Cx will get signal lock easily in many buildings and under very heavy tree cover, since that is what its meant to do. The Gist logger posted above looks very nice, so the final decider will be what else you need a GPS for. I hike, camp and canoe a lot so the 60Cx makes more sense as I can use it for actual navigation.