Bruno, esta questão é muito recorrente, importante e há diversas maneiras de tratar o assunto.
A primeira coisa a observar é que qualquer valor dado a priori é uma estimativa (sempre com bastante risco), ou seja, uma faixa de valores (por exemplo: "este software deve custar de 500.000 a 800.000"). Isto muitas vezes não resolve o problema da proposta comercial, mas vejamos outros pontos:
1 - Uma alternativa é dizer ao cliente que o software vai custar quanto ele quiser investir. Por exemplo, se ele tiver 600.000 destinados para o investimento, é este o valor. Quanto a o que vai ser entregue para os 600.000, a resposta é: "o máximo possível de itens, lembrando que o escopo é aberto (pode receber constantemente mudanças) e será priorizado para ser construído o que mais adicionar valor ao negócio". Atingido os 600.000, o desenvolvimento se encerra. Claro que coisas ficarão de fora, mas serão as menos prioritárias.
2 - A melhor alternativa é não trabalhar com preço fechado (pois o escopo não o é) e colocar uma equipe dedicada ao produto em caráter permanente. Aí, o cliente poderá dizer: "Ah, mas isto é um projeto sem fim!", ao que respondemos: "não estamos falando de projeto, mas sim de ciclo de vida de produto, que não é como um projeto que tem duração menor". Nas fases iniciais, a equipe pode ser maior, para dar mais ritmo, e depois ser reduzida para fazer a necessária sustentação. Que ninguém se iluda: software nunca fica pronto de verdade (a menos que não esteja sendo usado) e sempre vai exigir uma equipe para cuidar.
O item 1 exige algo chamado confiança na equipe.
O item 2 exige algo chamado visão de produto (em vez de visão de projeto).
Confiança e visão correta do que seja um software são mercadorias escassas, mas milagre não existe.
Como podemos ver, o desafio é enorme, mas há caminhos.