Теоретически - можно, никаких проблем.
Что касается практики - не вижу смысла.
Проще в рамках одного договора расписать этапы работ, и принимать их по мере выполнения.
Ну и не забывайте - договор, это документ, в котором договариваются две (или более) стороны, и он должен устраивать всех.
Будет ли удобно это вашему контрагенту, согласится ли он на такие условия?
чтобы не получилось такого если программер подведет, сроки прохерятся и клиент захочет вернуть всю сумму
Вообще по логике - если программер вас подведет, и сроки похерятся - это исключительно ваши проблемы. Иначе зачем вы вообще? Проще клиенту напрямую заключать договора с программером, и нести риски.
Клиент идет к вам как раз затем, чтобы у него не болела голова по поводу программеров которые подвели - он вам дал деньги, и поставил срок - а там крутитесь как хотите, если не можете верните деньги, он их отдаст другому.