Arduino w/ Atmega328: can't clear the watchdog
wdt_reset() 


does not disable the watchdog, it merely resets its timer, delaying the expiration.

You probably want

wdt_disable()


However, your overall approach may not be the most sound - letting the watchdog expire can be clever, but it is also fairly heavy-handed compared to approaches such as using a normal timer interrupt or having your code limit itself.  Normally the watchdog is for unanticipated errors.