It depends.
Generally the only time you post prices are when you are the cost leader. They you attract a very low quality of client IMO. It comoditizes (says you are like the rest of the low ballers) your business.
If you have prices listed, no need for them to call you and see how much you charge. (if they never talk to you, you miss the chance to impress them with your courtesy, professionalism and quality customer care). They might try to self diagnose to fit into one of your charges categories and come up with the wrong price and run themselves off; or decide not to fix something that they think is too much.
Gives your personal information to your competition.
On the other hand it looks open and honest.
I feel that, while it is sometimes a PITA to take a call and listen to each customer repeat their tails of frustration over and over again, this is exactly the secret to getting that phone call to become a customer. Just shut up and listen, when they are done getting all their worries, complaints and aggravations out on the phone you say, yes, we can fix that. Then they are your customer.
If you are so busy you do not need extra customers, then post your prices hoping that those guys won't call you up and waste your time.
+1
A few goals you want to keep in mind.
1. Avoid being shopped based on price: Those who are shopping based on price will skip your site or refrain from calling you if you are not the cheapest.
2. Get people to call you: If everything about your site says quality and professionalism, but you list no prices, then you should have in the least intrigued them enough to call you. However, if your site is crap and you don't list your prices, then don't expect them to call you at all. If you site is crap and you DO list your prices, then you are probably better off being the cheapest so that you at least get those customers . . .
One thing to note about having people call you is that if your competition is anything like mine, then most are rude, arrogant or simply unprofessional over the phone and if I were the customer, I would never do business with half of them. Use the phone call to win them over.
3. Turn price shoppers into quality shoppers: Yes, this can be done. Those who are shopping based on priced probably would not have called you if you listed your prices on your site and you were not the cheapest. While these are typically not the customers you want anyways, you have to realize that sometimes these customers are simply price conscientious and not cheap. In other words, they think that a virus removal is a virus removal and that one repair being done by one shop is no different than the same repair being done by another shop, so why pay more when you can pay less. The call you receive is your chances to quickly educate them on why you are better or in the very least give them the impression that you are better and that you are worth being paid more.
4. Staying ahead of the competition: This is probably debatable or in the least should be done with balance. We experiment with different price structures, packages, bundles etc. and we would rather keep these things a secret from the competition for as long as possible. There is a couple reasons for this. One, most of our competition does not price things in the same manner as we do. This is important because we price things in such a way that makes up-selling easy and very profitable. This is one of those things that gives us a financial edge over our competition and allows us to invest more money into the business for things like advertising. Another thing that we try and avoid is price wars. We noticed in the past that when we would post our prices publicly on local sites or on our site, that shortly afterwards, our competition would post their prices, but at a cheaper price.
The other side of this token is that you may want to post some prices, but maybe not your price structures or bundled packages that allow you to easily up-sell.
One thing that is debatable for us is when we are doing promotions or when we are trying to increase front end sales (products or services that get prospective customers in the door) in order to ultimately increase back end sales (products or services that you up-sell to your new customers or already current customers). The debate for us is "do we post this new lower price publicly in order to attract more customers to ultimately increase our back end sales?" or "Do we only mention these promotions when customers call us on the phone?" On one end, you increase the likelihood of you receiving more calls, but you also chance your competition catching on to your promotion and either copying you or starting a price war. On the other hand though, you chance not receiving as many calls (which may actually be a good thing if they are only attracting cheap customers), but you in the very least avoid your competition catching on until they decide to mystery shop you.