I'm an SEO consultant and I tell all my clients SEO is three prong:
A:
Site structure, your site has to be built in such a way google and other spiders can find it and read it. If your feeding the spider duplicate content or if the spiders cant find your content because your linking structure is fucked you aren't going to get far.
B:
Content, your going to need to feed the spiders content. The more content you have the better long tail search your going to have.
C:
Links - Although I have this listed last it is the most important, you can take a one page site with a tiny bit of content drop a ton of anchored links on it and you will rank.
When you hire an SEO in most cases they will fix your site structure, give you a content strategy but most important either connect you to a link network that they have established or use a team of link builders to develop your inbound links. Generally the only difference between the $50-$500 per hour SEO are their existing link networks. The $50 SEO will build your links from scratch the $500 SEO will attach you to an existing industry network and you will see results almost instantly.
