Риск в любом случае будет. Причем, очень важно понимать, что рискуете не вы, а и заказчик. Причем он, возможно еще сильнее вас — (вы только время оплачиваете, а он платит вам, другим разработчикам, может быть уже бегает — раскручивает проект, а если вы в запой вдруг уйдете или просто решите познать нирвану и уехать жить в Монголию — то он фактически потеряет все инвестиции (не только оплаченные вам) и кучу времени.
Я использую поэтапную оплату. Договариваемся о вехах (майлстоунах), и важно быстрей пройти первую веху, по которой заказчик видит хоть какой-то результат работы, а вы получаете какой-то скромный платеж. Большинство проектов, как бы хорошо не документировались, каким бы подробным ТЗ не было, все равно сильно зависят от программиста. Поэтому, если закачик вам что-то уже оплатил, хоть чуть-чуть, вы уже знаете, что платить он готов, и знаете, что ему не выгодно вам бросать (он более в вас нуждается чем вы в нем).
У меня с некоторыми заказчиками схема «bonus fund», когда регулярно с них получаю деньги, но не полностью, какая-то доля уходит в бонус-фонд. Это мои уже заработанные деньги, которые хранятся у заказчика. Если я пропадаю из проекта на полпути — это ему компенсация на смену программиста (ну и для меня мотивация работать дальше). Если все идет как надо, то по достижении какой-то вехи (зарелизили бета-версию или выпущен черновой вариант который хоть как-то делает какую-то важную функцию) я получаю этот бонус-фонд.
По такой схеме нет никаких технических лишних заморочек (как с логическими бомбами или криптованием кода итд), риск только в объеме работы за день-неделю (достижение первой вехи/первой оплаты). И заказчик при этом чувствует себя защищенным, что тоже важно.