GpxUpdate is a Geocache manager that allows you to update co-ordinates for puzzle caches, then export a modified GPX file. From there you may choose to convert to Google Earth format, copy to a GPS, copy to a PDA, etc.
The important thing is that it stores changes to files, rather than the file itself, meaning you can continually update the GPX file from geocaching.com, then apply the changes for the caches you've solved.
It's freely available (both in source code and as an end user program), and can theoretically run on any platform that supports Java and has a port of SWT/JFace. It has been tested on Linux and Mac OS X, and should work on Windows.
I've found this application really useful. I have a weekly scheduled pocket query on GeoCaching.com which sends me a list of the 500 nearest caches to my house that I haven't found. I then load the file into GpxUpdate, then press the Save button to export a modified GPX file, which I then use gpsbabel to export a Google Earth KML file, and also export to my Garmin GPS. I also copy the modified GPX file to my PDA for paperless caching.
During the week, as I figure out answers to the puzzle or multi caches, I update the co-ordinates in GpxUpdate. When I find a cache, I untick the box next to it in GpxUpdate (only ticked caches are exported). This means that when I sync my GPS, KML file and PDA, I get a list of only those caches I haven't found (regardless of how old my original query file is), and I get the updated co-ordinates on my GPS, meaning when I finally go to hunt the caches down, I can treat them like regular traditional caches.