I cant even rig the shield to use different pins because the SPI is way over in the big header on the far end of the board
One possible workaround for Adruino Mega boards using existing shields that dedicate pins 11, 12, and 13 to SPI signals:
Bend pins D11, D12, and D13 slightly away from the shield so that they do not make contact with the Arduino Mega board when they are plugged together.
Connect short male-to-male jumpers (or 24-guage solid hookup wire) from the Arduino Mega connection header to the shield header as follows:
MEGA header pin 50 (MISO) to Shield header pin 12
MEGA header pin 51 (MOSI) to Shield header pin 11
MEGA header pin 52 (SCK) to Shield header pin 13
Not as "neat" as I would like but it works for me. (And has the advantage of not cutting traces and making jumpers on the Mega board itself.)
(Especially to designers of SPI device Shields for Arduino and Arduino Mega boards)
How about following the lead of NKC Electronics? Their protoshield has a header that plugs into the ICSP connector on an Arduino or Arduino Mega board. The MISO, MOSI and SCK signals on the shield are routed to this connector and, therefore, aren't dedicated to pins 11, 12, and 13. I have tested this with a "regular" NKC protoshield plugged into a Duemilanove and also plugged into a Mega1280. No pin-bending and no jumpers (and no source-code software changes for arduino-0021) required to access SPI device(s) on the protoshield. Works a treat.
My last words on the subject:
The new Arduino Ethernet shield follows this scheme. I don't have one to test (and I probably won't buy one---for a couple of reasons), but it appears that they did the "Right Thing" regarding the SPI pin interface.