Works fine for me on the UNO down to at least 250 mSec. The worry was that if the bootloader takes too long the WDT may go off again be fore your code has a chance to turn off the WDT. Since it works at 250 mSec it should work at any longer interval. How often do you guarantee that your loop() runs, anyway?
In your setup() turn off WDT at the start of setup() and turn it on again at the end. Here is my test sketch:
#include <avr/wdt.h>
unsigned long ToggleDelay;
const int LEDpin = 13;
void toggle_led()
{
digitalWrite(LEDpin, !digitalRead(LEDpin));
}
void setup()
{
wdt_disable(); // Tell the watchdog to sleep
pinMode(LEDpin, OUTPUT);
ToggleDelay = 1;
wdt_enable(WDTO_250MS); // Tell the watchdog to reset if 1/4 second goes by without a pet
}
void loop()
{
wdt_reset(); // Pet the watchdog
toggle_led();
delay(ToggleDelay); // When this delay gets up around 1/4 second the WDT should reset the Arduino
ToggleDelay += 5;
}
The LED toggles on and off with the delay increasing by 5 mSec after each toggle. After about 25 blinks (50 toggles), when the delay has gotten over 250 mSec, the WDT detects the failure and resets the Arduino.