Using the Timer 2 as an asynchronous timer with an external crystal for timing can be a pain. Today I solved a problem because of this. I failed to check the TNCT2 register update busy flag after updating it to the time-out value resulting in failed update. So the counter was just continuing from there it was and in turn resulted in a triggered watchdog.
Well, I also found that waiting for the TCNT2 register when you don't have to (sort of) could result in the counter counting 5 steps before going on. Very strange but I just removed the line and forgot about that.
So, if you are using the timer in asynchronous mode make sure to check all the busy bits after each write or a lot of unpredicted things may happen.