Don't know which mechanism Ubuntu is using for to "hibernate", but perhaps it's using the swap-filesystem? So, every time it reboots if finds the "invalid" data contained in the swap partition, tries to load it and hangs forever.
If it's potentially like that, and you know which is the partition that is used as swap, you could try overwriting everything in that partition ("dd if=/dev/zero of=/dev/<your_swap_hdd_and_partition>") and then re-create the swap-filesystem.
Example (USE YOUR REAL SWAP-PARTITION! Find it with "fdisk -l" - it's called "Linux swap / Solaris"):
If your swap partition is "sda2" then...
- dd if=/dev/zero of=/dev/sda2
- mkswap /dev/sda2