2 arduinos 1 shield

PaulS:

However, that probably requires you to be real careful so that each thread (web serving, writing to the SD card) doesn't interfere with the other.

Since the Arduino isn't running a multi-threaded operating system, that shouldn't be a problem.

I was thinking more that since you have two logical threads, but no threading infrastructure, that instead of doing blocking reads and delays, you have to do polling, and use techniques like blink without delay so that both threads will be done. It isn't rocket science, but it is attention to detail.