My program starting freezing, Unity completely froze and made it so I had to CTRL+ALT+DEL.
Finally tracked the fault down to
NGUITools.Broadcast("Refresh");
If I remove this line, my program no longer freezes. I am not sure exactly what is happening but I can only assume that maybe I have too many children in my UnityObject?