Dawno nie używałem AVR wiec mogę się mylić. Ale timer2_ovf_vect nie jest wywoływany po przepelnieniu TCNT2 (255 -> 0)? Jeśli tak to nie sprawdzisz tam wartości bo zawsze będzie taka sama (0?)
Tak jak napisał kolega wyżej przerwanie OVF wykonuje się w momencie, gdy timer się przepełnia, co w tym przypadku oznacza jego wyzerowanie, czyli wyzerowanie rejestru TCNT2.
W zależności od realizowanego programu moment wejścia w przerwanie może być nieco opóźniony w stosunku do momentu przepełnienia się licznika, a w tym czasie timer zlicza impulsy, bo jest niezależny od wykonania przez program funkcji przerwania. W związku z tym w funkcji przerwania, gdy sprawdzasz wartość TCNT2 może być równa zero lub większa niż zero (w zależności od ustawionego preskalera, czyli częstotliwości impulsów jaka trafia do timera).
Sam moment wejścia w przerwanie także nieco trwa, ponieważ mikrokontroler musi wykonać np. odkładanie na stosie rejestrów, które użyje w przerwaniu oraz innych niezbędnych.