I bought a 'sirf III' something or other USB GPS fob from ebay for around $30 about 18 months ago, and am using it ... ok just playing with it on a small ASUS eee, using OpenCPN. It works well.
On the boat, I'm currently using a LOWRANCE handheld GPS I got for $5 at a flea market.
If anyone's unsure of what's inside a GPS USB fob... it's basically a GPS chip that constantly spews NMEA GPS sentences, and a serial-to-USB chip that interfaces the NMEA serial to USB. So, to consume the GPS output, the software simply needs to find the virtual serial port and read the data, and most of the charting apps know how to find it. In Linux, there's gpsd, which takes the GPS data stream and makes it available to multiple apps.