I see. Like when a nuclear power station goes offline rather than a couple of wind turbines.
How long does it take to adjust then?
2 weeks at 10 min per block, so it takes 30 min for each block difficulty wont be adjusted downwards for 6 weeks. It's an issue at the mo because we're in the transition from off the shelf hardware to dedicated hardware and ASICminer happens to be leading that transition. When more ASIC manufacturers have products ready for immediate sale and difficulty levels out its unlikely to be a major issue but it will be a rough ride upto that point as hardware prices will need to establish a predictable ROI time.
And as was pointed out, there is a large variation in the "time to solve", but perhaps if the 2 weeks to adjust were modified to something akin to a Kalman filter, see
http://en.wikipedia.org/wiki/Kalman_filter one might be able to shorten the "time to change the difficulty" to a very short window?
I see times to solve of one minute or less to over 30 minutes regularly, just watching
http://blockchain.info/ I don't know what the average is but I would imagine that the code might be able to "Kalman filter" the difficulty "on the fly", i.e. every block if the block was solved in less than 10 minutes, and at the 10 minuute mark if no solution arrives. One would hope that the mean time to solution wouldn't "hunt" or wildly oscillate, but would damp down quickly.
This would then be able to correct for large swing in network hashing power very quickly.
The only issue, other than actually writing and testing the code, would be how to synchronise all the bitcoind
s and bitcoinqt
s that will calculate a new difficulty on their bitcoin clocks and the last blocks time. I don't know what happens now at the two week magic moment, or is it a block count number? Changing the difficulty "mid block" would seem to be similar to a new best block kind of signal to those who are mining. If a miner solves first at a higher difficulty than the "corrected" difficulty, so what? It's still valid, it would seem to me.
Just idle thoughts from a old coder that would like to see BTC's ranks swell by making the windows version (bitcoin-qt.exe) more palatable to the masses, that are not geeks. I would like bitcoin-qt to be everything it still is, but look more like
http://blockchain.info/, i.e. show the liveliness of the BTC network. It doesn't have to be musical, though it could be, like
http://www.listentobitcoin.com/ 
I sometimes run a modified version of bitcoind in -printtoconsole mode, where the printf()s are "corrected" to a DOS <=80 character length, or other tricks with \r & \n. It is interesting to watch bitcoind side by side with
http://blockchain.info/ and see them both showing the transactions as they are coming in, and the new blocks.
Now if I could capture that and display it in bitcoin-qt...?
I'm the one who offered the splash screen change to try and keep it on "top" and animate it a little during the long VerifyDB() time, and the move the wallet.dat file anywhere change.
Ron
I had to google Kalman filter as I had no idea what it was - it made for some interesting reading even though it is some pretty hardcore mathematics!
What applications were you writing that you are even aware of it, I would be quite interested to know.
The change at the moment is simply done on the block count every 2016 blocks I believe.
I also totally agree about bitcoin-qt more friendly for the masses - have you looked into the "signing" of messages yet? There is absolutely no way the man on the street is ever going to get their head around that - it is far to "geek" to be completely honest.
It makes a pleasant change to actually have some interesting ideas posted that can address some of the issues.