johnwasser:
Another option is to have an Arduino with an SD card act as an ICSP device (like the ArduinoISP sketch) and program a separate Arduino through the ICSP header. I'm pretty sure that has already been done.
so by that you mean that I would need two Arduinos connected. The first one boots up, flashes the second one, then the second one boots up and does everything I need.