In case anyone still wants to do this, I've done it with an Arudino Uno R3, an Arduino Ethernet Shield R3, and a SK Pang Electronics CAN-BUS Shield. I stacked the Ethernet shield first, then attached very long headers to the CAN-BUS shield (as the Ethernet port is fairly high) on the following pins: all pins on the 6-pin power port, D2 (if you're using the CAN-BUS INT pin), D10-13, and GND. I then bent the header pin coming from pin D10 of the CAN-BUS shield so it would go into D9 of the Ethernet shield. Correspondingly, I changed the SPI chip select (CS) pin in the software for the CAN-BUS shield from D10 to D9. I used the CAN-BUS libraries from http://www.seeedstudio.com/wiki/images/5/55/CAN_BUS_Shield.zip
and changed line 299 in mcp_can_dfs.h from
#define SPICS 10
#define SPICS 9
This is needed because the Ethernet shield uses D10 as its CS pin, and a unique CS pin is needed for every device on the SPI bus. Therefore, you can really use any other digital pin as the CAN-BUS CS pin (except D4 if you're using the Ethernet shield's SD card).