Da gehen mir langsam die Ideen aus...
Mit dem WDT hab ich noch nicht gearbeitet, evtl schlägt er zu, bevor du in main() ankommst. In diesem Falle musst du das WDT-Disable früh machen, also vor der Initialisierung und bevor du nach main kommst.

Einige kleine Änderungen, die aber nicht groß was zur Sache tun. Aber man weiß ja nie Bild  
Ist jetzt ein 7-stelliges Lauflicht und die 8. LED blinkt.

Code:
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/signal.h>
#include <avr/interrupt.h>

#define F_CPU 8000000
#define INTS_PER_SECOND 1
#define PRESCALE 256

void wait(void);

volatile uint8_t wasinterrupted = 0;

main()
{
    wdt_disable();

    DDRC = 0xff;
    PORTC = 0xbf;

    TCCR1A = 0;
    TCCR1B = (1<<WGM12) | (1<<CS11) | (1<<CS10);
    
    OCR1A = (uint16_t) ((uint32_t)F_CPU*INTS_PER_SECOND/PRESCALE);
    
    TIFR = (1<<OCF1A);
    TIMSK = (1<<OCIE1A);

    sei();

    while(1)
    {
	PORTC ^= 0x41;
	wait();
	PORTC ^= 3<<0;
	wait();
	PORTC ^= 3<<1;
	wait();
	PORTC ^= 3<<2;
	wait();
	PORTC ^= 3<<3;
	wait();
	PORTC ^= 3<<4;
	wait();
	PORTC ^= 3<<5;
	wait();
    	}
}

void wait()
{
    wasinterrupted = 0;
    while (!wasinterrupted);
}


SIGNAL(SIG_OUTPUT_COMPARE1A)
{
    wasinterrupted = 1;
    PORTC ^= 0x80;
}