I had been thinking about this problem and realized that one of the tricks to getting the problem minimized would be to run the backup from the same mongo shell sessions/script as the lock/unlock pair, so I wrote a little script to do that. The script defines a function called 'runBackup' which takes a string representing your backup command (so it could be a shell script, batch file, ec2-snapshot command, tar czf command, anything at all). The script checks that the server is not already locked, and if it's not, it acquires the lock, runs the command given, and upon its completion runs the unlock command.
The last line shows how to call this function - you can use this as a starting point to create your own.
The code is in my Github repo, along with many other little scripts that might be useful to people who are playing with mongo shell much of the time.