If you go into Files - Preferences in the Arduino IDE, there is an option to have verbose output during compiling.
You could try turning that on, then watch the messages in the message box in case it gives an idea of which stage in the process is holding things up.
If possible, can you copy and paste all the messages and post them (using code tags, since they could be long)?
Regards
Ray