I have had a recurrent problem with the login screen getting stuck at 50% for a long time. One possible cause is that after an update, OS X is attempting to move /usr/local out of the way and then put it back. As I have many files installed there with homebrew, the update can take many hours. This is certainly true for OS X upgrades as reported here.
However, I've also seen this problem for what seem like minor system updates (e.g. Printer software upgrades). Does anybody know if OS X always try to move usr/local out of the way, even for minor updates?