Step 1: The Hardware
1. An Arduino (which ever you prefer. I stick to the uno, duemilanove, mega, and this bad boy )
2. A GPS module (I'm using the EM-406 from Sparkfun )
3. A matching way to hook the GPS module to the Arduino (I went with Sparkfun's GPS Shield )
4. And a microSD Sheild (Again from Sparkfun )
Some optional stuff:
5. Indicator LED (ok ok I won't force Sparkfun on you for this guy)
6. A nice hard weatherproof case (I used the Pelican 1010 which fit perfectly)
7. Battery (No point logging GPS data tethered to your computer)
Step 2: Hook It All Up
I put the GPS Shield on top to maximize reception.
The led is on pin 13 (see close up pic). This will flash every time it logs a GPS point.
To work with my code, make sure the little switch is set to "DLINE" on the GPS Shield. (Included a close up if you have no idea what I'm talking about) This is so we can use pins 2 and 3 to communicate with the GPS instead of the "UART" setting, which uses pins 0 and 1. This is a personal preference, modify the code as you wish. If you are using the UART, then make to switch it over to DLINE while uploading code to the Arduino if the shield is attached.
Lastly remember to have your microSD card formatted to FAT (FAT16).
Sparkfun (and many others!) has some awesome tutorials on the product pages that I referenced in this Instructable's Hardware page for both of the shields. I'd highly recommend a glance through them if this is a little too confusing. (Especially the microSD tutorial!!!!!)