Dann stimmt mit deinem Servo etwas nicht. Oder du hast immer noch einen falschen Code.
Code:
#include <avr/io.h>         
#include <stdbool.h>
#include <stdlib.h>
#include <avr/io.h>
#include <AVR/iom8.h>
#include <inttypes.h>
#include <util/delay.h>

#define F_CPU 12000000    // clock

// Timer1 initialisieren

void timer1_init(void)
{
 TCCR1A |= (1<<WGM11)|(1<<COM1A1)|(1<<COM1A0); // initalize mega8 Timer1 with 9Bit, inverted, Prescaler 256
 TCCR1B = (1<<CS12); // this gives us a signal with 21.76ms at 12MHz

 OCR1A = 476; // pulse of 1.5ms 512- 1500*(F_CPU/256/1000000)/2
             // Hier wieder der PWM auf mittelstellung gebracht oder?
}

 int main (void)
     {
timer1_init();
    unsigned char i;      /* Variable i */

     DDRB = ( 1 << PB1 );           /* Pin PB0 als Ausgang für Servo */
   
     DDRD  &= (~ (1<<PD2)|(1<<PD3));          /* Pin D2 als Eingang */
     PORTD |= (1<<PD2)|(1<<PD3);            /* Pull Up von PIN D2 aktivieren */

   
while(1){
   if (!( PIND & (1<<PIND2)))      /* mache was wenn PinD2 low ist */
   {
      if(OCR1A > 452){
        OCR1A--;      /* Pulsbreite verkürzen */
      }
   } 
   if (!( PIND & (1<<PIND3)))      /* mache was wenn PinD3 low ist */
   {
      if(OCR1A < 499){
        OCR1A++;      /* Pulsbreite verlängern */
      }
   } 
   
   if (( PIND & (1<<PIND2))&&(PIND & (1<<PIND3))) {  /* Mitte wenn keine Taste */
    OCR1A = 476;
   }
   for(i=0;i<50;i++)
      _delay_ms(10); 
}
}
Probiers mal damit, eine Taste für links- eine für rechstlauf.