>Кто нибудь имел подобную практику.
Да.
Те товарищи, с которыми я имел дело, были немного знакомы с предметной областью и, кажется, у них был какой-то консультант, который говорил, сколько приблизительно потратит на выполнение работы программист среднего уровня. Таким образом они знают приблизительно временные рамки проекта, дают их тебе и лукаво спрашивают, возможно ли сделать, то что они просят, за те сроки, которые тебе предлагают, дальше два варианта, если ты говоришь, что времени очень мало, тогда либо ты разводишь, что ты хороший программист, либо ты хочешь срубить дополнительно бабла (ибо оплата почасовая и естественно тебе хочется сделать быстро, а потом сидеть и пить пиво), в таком случае скорее всего от тебя откажутся, второй вариант, ты говоришь, что ты сделаешь работу в установленные сроки (можешь накинуть себе 4-5 часов на отладку, опыт показывает, что не помешает

), если в сравнении с временем отпущенным на проект твои 4-5 часов составляют маленькую часть, то обычно принимается твой вариант и ты начинаешь работать.
Часто перед этапом разработки стороны начинают торговаться про те фичи, которые должны быть реализованы в проекте, таким образом надо, не отходя от кассы, сразу же переносить время начала проекта на время окончания дискуссии про фичи, трезво оценивать сколько времени надо для реализации каждой дополнительной фичи, которая выявляется во время дискуссии.
Можно предложить заказчику, чтобы ты сам создал для себя ТЗ, а потом заказчик его утвердил. В чем весь прикол того, что ты сам для себя пишешь ТЗ. Прикол в том, что если ты его напишешь грамотно, то ты его напишешь под себя

т.е. ты туда вносишь все то, что тебе может помочь сделать проект, и стараешься вынести оттуда все, что тебе усложнит выполнение онного. Причем если ты будешь писать ТЗ, то с заказчиком можно договориться, что раз ты составляешь ТЗ, то этот этап проходит отдельным проектом, оговариваете цену за час написания ТЗ, другой документации и вперед! не ступишь, тебе же легче будет.
Ну и с оплатой, посмотри топик на РНРклубе, что делать с заказчиком
http://www.phpclub.net/talk/showthread.php?s=&threadid=39820&rand=25
смотри не наступи на грабли, вообще-то понятия предоплата бояться не следует, причем реализовывать это понятие необходимо на нескольких этапах написания приложения, например, 10%, 50%, 80% это кто как договорится

Вот вроде бы и все....