I don't have a good answer - depends "where" it is hung up I guess, if it's still doing work then that work is (to my mind) in the application itself, so you'd have to kill that (i.e. stop the service like you suggest).
Killing the controlling process (if it's external to the application (as opposed to within a process)) doesn't help I guess?
Just a thought, it's not hung up on a lock is it - i.e. something that nu#action:security.locks would tell you and you could investigate or clear?