The problem with using Timer2 is that it's only 8 bit so you can't do a long timeout event.
You could add a counter in the timer2 ISR that will check only every 10 overflows (sort of cascading)
volatile byte counter = myPreferedValue;
void ISR()
{
if (counter-- == 0)
{
do your check
counter = myPreferedValue;
}
}
does that make sense?