Binary package hint: upstart
I discovered this bug when upgrading from Dapper to Edgy. The upgraded system contained upstart and dependent packages ubuntu-minimal, upstart-compat-sysv, startup-tasks, system-services, upstart-logd. After upgrading, I rebooted and the system hang at the message "Freeing unused kernel memory: 204K freed". After much searching on the web for the cause of the problem, I discovered that a corrupt /sbin/init could be the cause, and if I issued "init=/bin/sh" at the kernel prompt at boot time, I could verify this; which I did.
My system at home was similarly upgraded from Dapper to Edgy. However, for some reasson, it was installed with sysvinit and NOT upstart and dependent packages. Since my home system did not need upstart and dependent packages to work properly, I realized I could delete them from my work machine and then install sysvinit instead. So, I booted up under the Dapper live CD (don't have an Edby CD yet) and performed this task after copying the /sbin/init file and the sysvinit*.deb file from my home machine.
My system now boots properly without upstart. The size of the /sbin/init file in upstart is different from sysvinit, so they ARE different. Why it does not work in upstart for my system is a puzzle I do not care to solve further, since I must now use my system for working.