No, you can't run from SD card as if it were internal Flash.
You could move non-changing data from your code to the SD and access it as needed, reduce your sketch size.
You could probably write code (bootloader) to upload your program and then start your new sketch. Has been discussed here, don't know if its ever been done.
Probably easier to get a processor with more memory. There a few of us working on 1284P based kind of Uno, lot more memory to play with there.http://arduino.cc/forum/index.php/topic,56567.0.htmlhttp://arduino.cc/forum/index.php/topic,61126.105.html