I just uploaded this watchdog timer sketch to my Arduino UNO (R2) using a USBasp programmer. It works just fine. Perhaps your sketch is missing something.
// Watchdog Timer Example
#include <avr/wdt.h>
unsigned long ToggleDelay; // When this delay grows to longer than the WDT interval the WDT resets the Arduino
const int LEDpin = 13;
void toggle_led()
{
digitalWrite(LEDpin, !digitalRead(LEDpin));
}
void setup()
{
wdt_disable();
ToggleDelay = 1; // Start with a very short delay
pinMode(LEDpin, OUTPUT);
wdt_enable(WDTO_250MS); // Set watchdog to 1/4 second
}
void loop()
{
wdt_reset();
toggle_led(); // Blinking goes slower and slower until the WDT causes reset, then starts over.
delay(ToggleDelay);
ToggleDelay += 5; // Increase the delay by 5 milliseconds.
}