And if that estimate isn't within 10-15% (the usual error bars) of the actual project duration/billable hours, there's going to be a problem.
What's more, while the developer(s) involved should have some input into that SOW, they shouldn't be writing that document. Rather, they should be writing code for other projects already estimated and sold.
As for in-house projects, that's a whole different story and is really dependent upon the processes of that particular organization.
All that said, developers should be spending their time developing, and their managers/managing consultants/salespeople should be doing all the other non-development tasks.
Edit: Fixed grammatical errors.