Первое, в такой ситуации это нужно описать ее заказчику. Правдиво сообщить, что оценить верно невозможно по каким-то причинам. Затем попробовать приблизительно оценить сколько займет само исследование на основе вашего опыта. Исследование должно дать шаги, которые приведут к решению. Всю задачу оценить можно только разбив на шаги и затем каждый шаг уже оценивать. Как вы разобъете и как потом оцените -- это зависит от вашего опыта. Продвинутые люди (McConnell, "Software Estimation...") говорят о вычислении времени на основе истории, а не на угадывании. Угадывание не надежно. Позволять угадывать можно давать только тем, кто будет делать шаги те. Как-то так, если кратко.
У МакКоннелла есть кое-что интересное об оценках времени. Он там пишет о том, как вы общаетесь с заказчиком; что именно обещаете; что заказчик просит; что собирать, чтобы потом оценивать верно и другое.
Ну еще можно почитать у Эндрю Ханта и Дэвида Томаса в "Программисте-прагматтике". Там уже к Agile они склоняются всё. У них об итерациях уже идет речь.