In many cases doing it this way is by far the best option. But for a lot of businesses (small, locally oriented ones in particular) outsourcing this task may well end up being a waste of money. If you take a different approach, get a handle on the key concepts yourself and apply them consistently you may well end up ranking for some relevant keywords before too long and make a few sales as a result. Reach that stage and you'll really start to get into it and own the process. Then there'll be no stopping you!
You don't outsource decisions regarding offline advertising, after all. That's because you want to choose what you're doing, try different approaches and monitor the responses you get so you can improve on them. So why hand the challenge over to someone else when it comes to a big chunk of your online promotion?
Sure, an SEO company can save you time. And it may get you some good results. But ultimately the process is fractured in the vast majority of cases. They do their thing and you do yours. The two operations are not meshed -- at least not in an ongoing way.
And usually, unlike you, they don't truly care about the site that they're optimizing. Sure, they may be skilled, have professional pride and the very best of intentions. But they don't have the strong connection to the site that you have. After all, your website is your business on the web. And you and your staff are your business. It's the knowledge, skill and professional conduct of these people that Google is really trying to get a handle on so it can rank your pages accordingly.
Let's say that you are a local dog breeder, for example. You decide to outsource your site building and SEO to a company. They are flat out with numerous projects and decide to target an obvious keyword phrase, say, "dog breeders Perth". They build a main page around that, along with a contact and about page. They write the copy, build links and finally get you on page one for that search. That brings you some good traffic and you are getting calls and sales so you're happy, and you never look further into the whole process.
However, if you'd done it yourself, you might have taken a different route that was ultimately more profitable. For example, since you have several different breeds, as well as the main page targeting "dog breeders Perth" you build a page for each of your breeds. So you have separate ones targeting "poodles Perth", "daschunds Perth", "pekinese Perth", etc.
Say your main page doesn't rank very highly, but these individual pages do consistently well with say, five out of seven of them in the top three results of each search term. Because of the specificity of these searches, the traffic is excellent quality, and it adds up to more than getting on page one for that main, obvious search. It was easier to get to this level and you actually get more conversions as a result.
Now, it all depends on the SEO company you hire. Some may have seen this possibility. But some would not. They don't know your business well enough. So they don't think of it (or maybe they do but decide it's more profitable to go with the simple obvious approach). But because you know your business (hell, you are your business) you do think of it. And because you care about the site you are willing to put the time into building these pages.
And that's my point. If you can get into SEO enough to own the process, you can then make adjustments that will improve its effect. If you just think "Oh it's all too complex and difficult" and consequently outsource it to someone else then you may well be missing out on a whole lot of benefits.