I used ArduinoISP on my leonardo. If your not familiar with this stuff, practice a bit with another (cheaper) board.
Then try downloading the current firmware from the due's atmega16u2, for future reference and to check whether your setup is reliable.
On the Due, pick the ISP header next to the atmega16u2!!! (One time I almost picked the other one, just by habbit, which is not 5V tolerant)
I used this cmd line on linux:
/opt/arduino-1.5.2/hardware/tools/avrdude -C /opt/arduino-1.5.2/hardware/tools/avrdude.conf -p m16u2 -b 9600 -c avrisp -P /dev/ttyACM1 -U flash:r:due-fw-ori.hex:i
I had to use avrdude from arduino, because the one on my system had no support for the m16u2.
On windows it goes like this (note the -C arduino is needed when using leonardo as isp):
C:\Users\peter\arduino-1.5.2/hardware/tools/avr/bin/avrdude -C C:\Users\peter\arduino-1.5.2/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -p m16u2 -c arduino -P COM6 -b 9600 -Uflash:r:due-fw-ori.hex:i
Then burn the new firmware:
On linux:
/opt/arduino-1.5.2/hardware/tools/avrdude -C /opt/arduino-1.5.2/hardware/tools/avrdude.conf -pm16u2 -b 9600 -c avrisp -P /dev/ttyACM1 -U flash:w:Arduino-DUE-usbserial-prod-firmware-2013-02-05.hex:i
On windows:
C:\Users\peter\arduino-1.5.2/hardware/tools/avr/bin/avrdude -C C:\Users\peter\arduino-1.5.2/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -p m16u2 -c arduino -P COM6 -b 9600 -Uflash:w:Arduino-DUE-usbserial-prod-firmware-2013-02-05.hex:i