OK...so you are using an ISP programmer and not JTAG then. The most common mistake for losing programming ability is setting a clock fuse setting that indicates an external clock, but not providing an external clock.
If that is what you did (can you go back and look at what fuse settings you tried to set?), then you can fix it by temporarily applying an external clock to the XTAL1 pin of the processor. You can either use a real oscillator, or if you have a function generator, just set that to 1 MHz or so and use a 330 ohm resistor (value is not critical) to connect to the XTAL1 pin (make a common ground connection too). Reprogram the fuses with this temporary clock to go back to using an internal clock, then try again.
--
The
MegaRAM shield: add 128 kilobytes of external RAM to your Arduino Mega/Mega2560