Arduino won't go to sleep!

Stopping Timer0 might be excessive. I think turning off the interrupt should be sufficient.

byte oldTIMSK0 = TIMSK0;  // save Timer 0 Interrupt mask register
TIMSK0 = 0;  //  stop Timer 0 interrupts

// ... sleep

TIMSK0 = oldTIMSK0;  // This will probably cause pending interrupts to happen immediately.