Возможно, вы вызываете методы, которые не поддерживаются на устройстве.
Если вы звоните чему-то, чего просто не существует на устройстве, оно будет зависать.
Например, в одном из моих приложений я использую светодиодный индикатор iPhone4, и если я пытаюсь вызвать его на устройстве, на котором его нет, происходит сбой моего приложения.
Так что я должен поставить подвох, чтобы, если устройство не iPhone4, оно делало что-то еще.
Что-то еще, что пришло мне в голову, когда я пытался собрать для iPod Touch для друга, мне пришлось установить базовый SDK как 3.2, иначе он не будет правильно установлен на устройство, возможно, это связано с его iPod не обновляется, но он сказал мне, что это .. Просто мысль.
Надеюсь, это поможет.