Watchdog timer issue - AVR ATmega324PA
Yeah, that is because after the watchdog fires, you have to reset the corresponding flag before main starts again (there is a register where you can read out, what caused the reset) and to disable the watchdog from firing over and over. 

This code will fix your problem:

    // This function is called upon a HARDWARE RESET:
void reset(void) __attribute__((naked)) __attribute__((section(".init3")));

/*! Clear SREG_I on hardware reset. */
void reset(void)
{
     cli();
    // Note that for newer devices (any AVR that has the option to also
    // generate WDT interrupts), the watchdog timer remains active even
    // after a system reset (except a power-on condition), using the fastest
    // prescaler value (approximately 15 ms). It is therefore required
    // to turn off the watchdog early during program startup.
    MCUSR = 0; // clear reset flags
    wdt_disable();
}


This .init3 thing is a special code section where you can put code that is run before main starts. Here is a link that describes that, but you shouldn't worry too much about it, the code above will work just fine when put into the main.c.