It will be difficult for anyone else to debug your game as it is not exactly well commented, and quite convoluted.
What you should do is try to get as much info about the freeze, i.e. at what position in the game does it occur? Does it always occur in the same place, or is it at random times?
If you can pin it down to a particular time or location, then run in Debug mode and monitor CPU, memory, collision checks etc to see if something stands out.