Try killing all the agents like listener, dbsnmp agent, data gatherer running on the instance if you have. If thats the problem.. work around is create a script that kills all your agents first and tehn use server manager to shutdown database.

Shutdown immediate should kill the agents and bring the database down. Sometimes no where abouts why it bahaves like that. If you can't that way then 'shutdown abort' is the only solution.