Here's an idea to help mitigate the "Terrible, Horrible, No Good, Very Bad Day" syndrome, as well as the "Army in Paradise" syndrome.
The "Challenge Counter", which starts off low, should be incremented every day/month/whatever, and decremented every time the game throws a random external challenge your way, like a siege, or a frogman ambush, a fey mood, or any one of the future challenges like diseases/etc. The amount by which the counter is decremented would be directly related to the difficulty of the challenge. The current counter level would affect the likelihood of any challenge being introduced, in such a way that would make them less likely, but certainly not impossible, to occur when the meter is low, and very likely to occur if the meter is high. I realize that many challenges are dependent on other factors (like chasm monsters attacking more if you throw a lot of garbage down at them), but the Challenge Counter would only modify the current likelihoods, not replace them.
Obviously this would have the effect of spacing out the tough parts of the game, as well making "lucky" fortresses less boring to play. One less obvious benefit is that it would enable DF to have a "difficulty" setting when you start a new game. All it would have to do is modify the amount by which the challenge counter gets incremented every day. However, this isn't altogether necessary, as the choice of location (calm and temperate vs. freezing and haunted) already serves as a pre-game difficulty setting.
Perhaps a similar system is already in place, and I just don't know about it. I have, however, abandoned two fortresses because I got tired of waiting for something to happen. In one, I went 4 years and had already struck adamantium, and the worst that had happened to me was a few kobold thieves. In another, on the other hand, I was massacred by mandrills as I was digging out the first bedrooms. Losing is fun, but preparing for a siege that never comes is less so.