All right, it works!
I cut the trace as shown in the picture below. This was the easy part.
Figuring out the software modifications took some time tough, and I spent the better part of this afternoon trying to understand what was going on. I played with the Fat16 library, since this is what I intend to use. I tried changing the value of SPI_SS_PIN in SdCard.h from 10 to some other, unused pin. Using any other pin value from 2 to 9 did not work.
After researching Google a bit, I found the following on another board:
http://asynclabs.com/forums/viewtopic.php?f=13&t=63#p1156 note that on the avr it may still be necessary to keep the original chip select pin as an output to avoid disabling spi on the avr. sounds strange, but i found it in the documentation of the 328p--if pin 2 on port b is not set as output, or held high as an input, then the spi bus will not function as a master.
So my solution is to enable pin 10 as output and set it to high if that is not already chosen as the default SS pin. See the diff file I attached to this message.
Modifying the SdFat is trivial, just use the same idea inside ArduinoPins.h.
I still need to test this together with the EthernetShield, but I have no doubts it will work.

- Original board with the trace cut.
- datalogger-shield.jpg (674.12 KiB) Viewed 6158 times

- Modified shield.
- datalogger-shield2.jpg (939.01 KiB) Viewed 6158 times