Is the device being upgraded across a WAN link? That's the only thing that might cause an upgrade to take that long.
You can log into the remote device cli and have a look at the /var/log/sf directory. There should be a folder for the current upgrade with subfolders containing verbose details of the steps take so far.
If you need to cancel the job, I suggest opening a TAC case. They will be able to do it without breaking anything else by manipulating some files in the application that control the job execution.