For me it seems that cgminer hangs on occuring difficulty changes of the pool like this (It just happened when I was checking the PC):
[2013-09-30 00:30:49] Accepted 845b027c Diff 205/64 GPU 0 pool 0
[2013-09-30 00:30:56] Stratum from pool 0 detected new block
[2013-09-30 00:30:57] Accepted 2b1cb18f Diff 194/64 GPU 0 pool 0
[2013-09-30 00:31:00] Accepted b0b966b5 Diff 171/64 GPU 1 pool 0
[2013-09-30 00:31:02] Accepted a1d27d5a Diff 8.59K/64 GPU 0 pool 0
[2013-09-30 00:31:03] Stratum from pool 0 detected new block
[2013-09-30 00:31:04] Stratum connection to pool 0 interrupted
[2013-09-30 00:31:04] Pool 0 stratum share submission failure
[2013-09-30 00:31:05] Pool 0 difficulty changed to 512.000000
[2013-09-30 00:31:05] Pool 0 difficulty changed to 64.000000
I use CGWatcher but it seems that most times CGWatcher is not able to restart cgminer in these special cases.