Is there a way to invoke a reset via program instructions (purely via software)?
And no, I don't want to connect one of the digital pins to the reset pin and bring it low. This is a hardware solution and from what I can remember it's advised against in the ATmega168 datasheet.
Here's a simple little sketch that looks for digital pin 2 to go high and then executes the reset. Make sure you have a pull-down resistor on pin 2 so you don't leave it floating.
No, I must admit that haven't tried it. If its hanging I wonder if the bootloader needs to be modified to turn the watchdog off. See if you can set the interval long enough to get past the bootloader so you can turn the watchdog off in setup. I would have a go myself but am busy getting the GLCD library working with the ATmega644 chip