Cost totally depends upon the market, the experience of the person you hire, and the amount of work that will be done and what your goals are. Expect this to be an ongoing cost, not a one-time thing - you implement, you measure the results, you adjust. Rinse and repeat.
If you're a local business (with a physical address, not an "online only" business), it's
essential that you focus on Local SEO and you need someone who understands the difference between local and "generic" search! Look at the results pages for locally-oriented search terms - more than ever, the local "places" results dominate - generic results are being pushed down below the fold to the point where #1 generically may actually be more like #8 on the page!
Expenses for Local are weighted much more towards initial setup than with generic search (something to consider if you are short on budget), but whoever sets it up should be measuring results, looking for additional opportunities and be ready to adjust for changes in local ranking factors on an ongoing basis.
If you want to familiarize yourself with local search and get off to a a quick start the right way, look at David Mihm's excellent site and also visit GetListed dot org.
Real SEO's are not a fraud - unfortunately there are a lot of clueless opportunists and out-and-out scammers who call themselves "SEO's" who have given the industry a bad name. Google has some good guidelines for hiring an SEO -
http://www.google.com/support/webmasters/bin/answer.py?answer=35291
You only need SEO if you have not built a site correctly in the first place. The search terms you are targeting should be in the brief from the start, not an afterthought.
Building it right is a good start, but SEO is an ongoing process. Your site doesn't exist in a vacuum - there are constant changes, both from the engines and by competitors. A well-thought-out site won't give you the edge if your competitors are already established and have also done their homework... and have a good marketing person working to keep them where they are!
The quickest way of doing this is to use Adwords. You definitely get clicks when you pay to have you ads in Google search results, but make sure you set a daily limit on how much you spend in your account or you can end up with a huge bill.
(FYI, Google MAKES you declare a daily budget

)Organic search optimization takes time to yield results - Adwords is something to consider in conjunction with SEO. Again, hire someone who knows what they're doing. You'll spend a lot less on your ad costs if you work with someone who knows how to properly structure and optimize an account.
With my local clients, I usually start by creating or cleaning up their local citations, fixing anything which is
harming their generic rankings, and encourage them to establish a social presence - those are where a local business will get the best ROI. Then (if their budget allows) begin an adwords campaign and work on their sites in terms of generic ranking factors, classic link building, etc.
Look for a lot of good reviews. Check, Blackhatworld, Warrior, WickedFire etc. PM people that have posted in there service threads to see how they are.
Um ...personally, those are the LAST places I would look

!
(Long post, but I hope it helps

! )