NASA recommends (almost requires) the COCOMO model.
http://en.wikipedia.org/wiki/COCOMO
I think the COCOMO model is used by the Software Engineering Institute (SEI) at Carnegie Mellon University as part of the Capability Maturity Model (CMM).
As said in MANY of these posts, proper specifications/requirements are needed to estimate anything.
My company uses it exclusively and we have been proven quite accurate over the course of many projects.
http://sunset.usc.edu/csse/research/COCOMOII/cocomo_main.html