Es bastante complicado.
Normalmente todos los métodos de estimación se basan en estadísticas recogidas de proyectos anteriores.
Lo primero es evaluar el tamaño del sistema. Se puede hacer como dices con puntos de función, con lineas de código y demás. Una vez hecho eso, deberías tener claro cuantas lineas de código eres capaz de hacer por hora o cuantos puntos de función eres capaz de implentar y así estimar el coste. Para saber esto último, deberías haber hecho esto más veces y haber recogido tus estadísticas sobre este tema.
Si ya has realizado otros sistemas, también puedes comparar el tamaño/dificultad del que quieres evaluar con alguno de los que ya has hecho, para estimar un coste similar.
Si vas a evaluar un sistema por primera vez y no tienes ningún tipo de estadística anterior, el tema es más bien de "adivinación". Trata de dividir el sistema en varios cachos y estimar cada uno de ellos. De todas formas, una estadística aceptada es que no se puede estimar correctamente cuanto tiempo te va a llevar algo que te lleve más de una semana hacer. La conclusión es que deberías dividir el sistema en partes suficientemente pequeñas como para que puedas hacer cada una de ellas en menos de una semana. El problema de esto es que es habitual olvidarse de tareas que hay que hacer y que por tanto no se estiman.
En fin, ya ves que es complejo y hay libros enteros sobre el tema. Una método bastante generalizado es COCOMO. Búscalo en google.
Se bueno.