How to design a PCB that allows firmware updates.

This question is asked now & again. The bootloader as currently written checks to see if anyone is sending sketch-load commands after a reset, and starts the sketch load process if there is, otherwise the loaded sketch starts.

What would need to be done for Option 1 is to write a bootloader that checked for a sketch file on the SD card, if one existed then load that sketch up. If no sketch file found, check if anyone is sending sketch-load commands, and if neither, the loaded sketch runs.

For Option 2, the current bootloader just runs normally, not really caring who is providing the data.

I am pretty sure Option 2 has been done before, I recall reading about an art installation or similar where someone had a sketch that loaded new sketches into installed Arduino's.
In fact, that sounds a lot like what Optiloader does:
http://arduino.cc/forum/index.php/topic,68183.0.html