My brother is a Builder. He gets lots of people calling him up asking for "quotes" on work that they want doing. Of course, they want an accurate quote - a price that will remain the same if they want the work done, but for a job that might cost £100,000, this kind of quote is expensive to produce. My brother has to take a day or two off of work (or worse still, use his evenings and weekends instead of spending time with his family) in order to produce something accurate.
You might think that he has other options. Firstly, he could tell the customer either "no", or that he can only produce a ballpark figure. The problem with that is the customer will simply go elsewhere and find plenty of builders who will make up a price - knowing full well that they will not necessarily be able to do the job for that money.
He could work out a very crude figure, add 20% to allow for inaccuracies in the quote and run with that. You cannot compete in building like that. Plenty of other builders (including those who don't pay VAT) will provide what are actually very good prices (again, with little chance of either having a quality job done, or having the job done at all!).
So he is caught between a rock and a hard place. The problem is that the customer is not usually educated in the building industry. To them, it is like calling up and asking how much a car is. If they call 3 builders, 2 of those will have to produce a quote that won't even get used. Most people go for the lowest quote, again, because they don't understand that there is more to building work that price e.g. quality and reliability but so what? If people don't understand, they go on blindly and then moan that their builder wasn't very good.
Why do I tell you this? Well, the exact same problem exists in the software world. Someone calls up and asks, "how much is it for a web site?" or worse, "how much is it for a super-duper financial system that supports 1 million customers and takes less than a second to do something". You might as well ask how much a city costs, the answer is that it depends on about a million things.
There is a power play going on. The customer probably either has a budget or otherwise wants to know roughly how much something is before they decide whether they want the software. They don't want to tell the supplier their budget because they don't trust the supplier not to charge potentially more than they would otherwise charge once they know the budget. The supplier on the other hand doesn't want to fix pricing contractually until they know what is actually required. They also don't want to say nothing to the customer knowing they will simply go somewhere else and get the answer they want.
The two key points are then embedded in the last paragraph. Trust and Specification. When I worked at my last company, they were starting to formalise a Software Development Lifecycle (SDLC), which some of you possibly already have, but this was not just for the coding stage but for everything from initial contact through to delivery and sign-off. The key to the SDLC is both building trust with your customers (that you know what you are doing) and also being able to explain to the customer in a common language which dictates the time and thus cost of software development and at what stage they might expect to know the price with more certainty. At the same time, the commercial mind must also appreciate that you cannot say to a potential customer that you can't give them a price until they've paid you to complete a detailed design. You should be able to offer them example prices for different types of systems, the accuracy of that ballpark price (+100%/-50%) and more importantly, educate your customers on the types of things that can make the solution more expensive and those things that make it simpler. For example, most non-technical customers will not understand that a downloaded theme used as-is is much quicker and cheaper than trying to change everything around, fiddle with colours, placements etc. Again, you should be able to demonstrate to the customer, the kind of extra time these changes might take and how much that will cost. Even an idiot should understand the choice between taking an off-the-shelf product for, say, £5000 and a fully customised solution for £10000 even if they don't understand why that is!