Watching them, them seem to happen more often than not near/around a new block detected. Are the pool servers getting overwhelmed with work requests?
(this is a slow miner, but it shows the example)
[2013-05-06 12:48:33] Accepted ec784c92 Diff 1/1 GPU 0 pool 0
[2013-05-06 12:49:07] LONGPOLL from pool 0 detected new block
[2013-05-06 12:49:18] Pool 0
http://pool.50btc.com:8332 not responding!
[2013-05-06 12:49:18] Switching to pool 1
http://stratum.btcguild.com:3333 [2013-05-06 12:49:28] Accepted 14747813 Diff 12/1 GPU 0 pool 1
[2013-05-06 12:49:49] Accepted e2fd1414 Diff 1/1 GPU 0 pool 1
[2013-05-06 12:50:04] Pool 0
http://pool.50btc.com:8332 alive
[2013-05-06 12:50:04] Switching to pool 0
http://pool.50btc.com:8332 [2013-05-06 12:50:30] Accepted 03499f41 Diff 77/1 GPU 0 pool 0
[2013-05-06 12:50:39] Accepted e43ee9a8 Diff 1/1 GPU 0 pool 0
[2013-05-06 12:50:41] Accepted 2ae564a9 Diff 5/1 GPU 0 pool 0
Not sure if this would help exactly, but maybe as a test switch from getwork 8332 to stratum 3333 and see how it goes.