So sollte es funktionieren, die Timerzeit stimmt nicht und wenn die Taste länger als 65535 gedrückt ist dann leuchtet die LED wieder, da es zu einem Zählerüberlauf kommt.
Code:
#include <avr/io.h>       
#include <avr/interrupt.h>
#include <stdint.h>

volatile unsigned int a = 0;

ISR(TIMER0_OVF_vect)
{
  
  a++; // ca. 1 sec zahlt die Variable a
}

 void InitTimer(void)
{
  TCCR0 = TCCR0 | (1<<CS00);  // Prescaler CK/8
  TCNT0 = 0;
  TIMSK = TIMSK | (1<<TOIE0);
}


int main(void)
{

   InitTimer();
   sei();
   

  DDRB  &= (~ (1<<PB0));  /* Pin PB0 als Eingang */
  PORTB |= (1<<PB0);    /* Pull Up von PIN B0 aktivieren */
  DDRB   = (1<<DDB1);  // PB1 Ausgänge


  while(1)
  {
       if (!( PINB & (1<<PINB0))) { 	/* mache was wenn PinB0 low ist */ 
        	if (a < 6){ 				 /* Wenn länger als ca.6 sec Taster gedrückt, dann aus */
       			PORTB|=(1<<PB1);    // high
      			 }
  		 	else {PORTB&= ~(1<<PB1);  // low  
				}
       }			
      else
       {
         PORTB&= ~(1<<PB1);  // low
     		a=0;
	  }    
  }
}