Sollte der Begriff if(TIFR0 == 1) nicht if((TIFR0&0b00000001)==1) lauten ?
Es wird vor dem Timer Interrupt ja der Comparematch Interrupt ausgelöst.
Somit hat das TIFR0 Register beim Comparematch den Wert 3.
Also nicht den Wert 1 und deshalb wird deine Ausgabe nicht aktiv.

Wenn Du mit Interrupts arbeiten willst musst Du auch das "I" Flag im Statusregister setzen.
#asm ("sei");
Der Timer läuft in Deiner konfiguration schon an, hast Du auch wirklich 1024 Takte simuliert damit der Timer wenigstens mal bis Zählerstand 1 kommt ?

Mit dem 8 Bit Timer musst Du schon mit der Quarzfrequenz und dem Teilungsfaktor ein wenig rumprobieren bis Du genau auf 1 Sekunde kommst.
Einfacher geht das mit einem 16Bit Timer und dem Comparematch Interrupt, in dem dann eine Variable hochgezählt wird.