What tradeoffs and connection options are there in *low cost* bidirectional communication between just two microcontrollers?

In this case:

* Master/Slave relationship, bidirectional data flow
* Distance under an inch
* Slave plugs into the master (so ESD protection on the connections is a must).
* The slave micro is pretty dumb, but medium speed data is needed for block I/O from a SD card. Other than the SD card, there is a bit of low speed I/O on the slave unit where speed is not an issue.
* Cheap cheap cheap.
* Pin count is restricted.
* Prefer minimum protocol stack overhead.

Obvious options include SPI, CAN, USB, TTL Level Serial. I2C and 1-Wire are probably too slow. Because of the pin count issue modulating the power supply for data would be ideal, if there were a consumer level chipset that did it, saving two pins over the serial methods.