Alright, by popular demand I've slapped together a quick (command-line) program that will set the current mission on csg and cs2 files.
However. I can't compile a windows executable, although it should compile and run under windows.
Once it's compiled, you just need to type in "(program name) (target .csg/.cs2 file) (target mission #)"
I've tested it under Linux AMD64 and it seems to work fine. As I said it should work under windows; Mac OS will need someone to setup things to swap to compensate for endian changes.
It should work for retail FS2 campaign files as well, FS1 will require the CAMPAIGN_FILE_MIN_VERSION to be changed, but I suspect it will work then.
It performs fairly strict checking, so you can't mess things up by pointing it at a multiplayer file or somesuch.

Source code attached with a sample Linux executable.
Edit: Uploaded zip with windows executable, as well as an i386 linux one.