I find it to be too often that clients and developers get ahead of themselves when it comes to billing. You cant realistically come up with a budget for a project without details as to what they want to have, not have and where they woudl want to take the site in the future. So first steps first you need to talk to your client and get a sense of what they want. However more often then not clients wont have a clue about what they want in terms of specifics. They will say "I want to make a photography website" which to them seems simple but to a developer is not specific enough. The difference is the client doesnt know any better and the developer should.
So my proccess basically consists of first determining whether or not the client has a clue as to what they want or are asking for. If not try to guide them in such a way to make more concrete decisions. If it's for a business ask them how their proccesses work get to understand a bit of what they do and see if a website can be really helpful is some ways more then other. Kind of the "philosophical" approach first.
With this information you assemble a project scope. The scope consists of things you would have, would like to have on the site. It's basically a general idea of what it will and will not include. These are the ideas that you put in that you or the client thinks will be useful. The scope also addresses what the clients role will be on the site in terms of their active participation in certain areas.
One they have a more clear idea of what to they are getting you can do a proposal. With the information of what they want out of the site you can use to estimate your hours and production costs and come up with a budget for the project. Often times step 2 and 3 are combined in sort of packages. To say "okay for 1500 you can get this, but for 3k you can get this, and 6 k you can get this."
Once they buy of a proposal you should have a good idea in terms of resources you'll need and timeframe for developing a project.
All this to basically say you cannot reasonably do an estimate with alot of IF's because production time can vary greatly.
I get that "I want a business website with flash, how much do you charge for that" types of questions, and unfortunately I've seen some developers promise their clients the world for a small budget without understanding what is involved.
Also know clients will ALWAYS try to change or add things to the project. You can be a prick about it like me and stick to your guns in certain things but that old saying is true the customer is always right. However, just because they want more work out of you does not mean they are willing to pay you more.
My theory is your should be paid for all work you do. But not everyone agrees