How to design a PCB that allows firmware updates.

Couldn't you just run a tiny sketch on the Arduino with a #include and a function in a .h file on the SD card?
When you say firmware, do you mean a sketch?