A friend of mine just ran into this and we spent some time debugging it.
Long story short, I stumbled onto an lkml thread that seemed related .
Something tytso said in his first reply , and the fact that the root fs was ext4, led me to try:
echo 4 > /sys/fs/ext4/sda1/max_writeback_mb_bump
and suddenly the dpkg that had been stuck for at least 30 minutes started doing things again. I wish we had figured it out before giving up on the dpkg that had been stuck since January and forcing a reboot.
 "So I added a forced override for ext4, which now writes 128MB at a time --- with a sysfs tuning knob that allow the old behaviour to be restored if users really complained."