Try manually unmounting it and see if you experience the same error (I suspect you will). Then, to find out what's holding up the unmounting, try running lsof ("list open files").
Code:
$ su
# lsof /dev/hda1
In order to unmount a filesystem you can't have anybody using it. Normally during a shutdown, processes are killed and thus you won't have anybody using a filesystem and blocking the unmount. You might have some process that isn't getting killed. The lsof might give you a hint as to what that might be, if anything. A place to start, at least...