I do this for clients so my answer might seem strange! If you have the time, you can certainly do this yourself.
You can learn a lot about SEO all over this forum and many other places on the web. I would start with some good onpage optimization. Then, concentrate on building links from other related sites back to your site. It does take time to do properly, but it pays off big-time in the end - Free organic traffic!
Like I say, it is not rocket science but takes time commitment. If you are looking for a company offering this service, check to see whether they rank highly themselves on the search engines, see if they give client examples that rank well and then, actually check them yourself.