This little note is based on recent experience with a Mega328P. Given Atmel's consistency across the Mega and Tiny families, I would expect this to apply to most, if not all, other Mega and Tiny MCUs.
Scenario: I have a Mega328 that is awakened by a Pin Change interrupt from a sensor IC. I discovered, the hard way, that if you enter sleep with the pin change unserviced, Hello Zombie! It will never wake up (until it is reset). The reason is that it awakens when the INTERRUPT FLAG BIT for that interrupt changes from 0 to 1. If it begins sleeping with the interrupt unserviced, it is entering with the interrupt flag bit already set. The external signal can bang on that PCInt pin all it wants, and nothing happens, as far as sleep is concerned, because there is no change in the interrupt flag bit - its already set.
Solution: Easy - make sure that the flag bit for any interrupt that you expect a wake-up from to be cleared before you put it to sleep.
Application: I have not checked, but I'll bet that this applies to most wake-up sources.
Additional Note: One can, correctly ask: how could that interrupt flag possibly be set and the interrupt NOT be serviced? That, I cannot tell you. Interrupts were specifically enabled before it was put to sleep, so any interrupt SHOULD have fired. Yet, when I did Break-All in the debugger, it shows that the interrupt flag is set, the interrupt enable bits are all set, and the peripheral is banging away, with no wake-up. Clearly, it will not waken if the flag bit does not change from clear to set. I cannot explain HOW it got into this state, but I do know that as soon as I added a flag clear operation before entering sleep, the situation no longer occurred.