My site gets to the top ten in Google everytime but only when service + location is entered. Lets say, my site is called www.privatedetectivebristol.co.uk Well if you type in "private detective" in google.co.uk the name the site comes in nowhere....but if you type in "private detective bristol" the site comes up first. How do I get my site to come in in the top ten just for the "service" i.e private detective term?
Look at the sites that come on the first page for "private detective" - use yahoo site explorer http://siteexplorer.search.yahoo.com/ to see how many backlinks they've got - get more than them, and as many of them as possible with "private detective" or whatever the term is, as the anchor text.
You're ranking high for the "longtail" keyphrases since they are more targeted and less competitive. The broad phrase "private detective" is going to take alot more aggressive seo efforts to rank for and actually may not be worth the effort. Stick to what works, longtail local keyphrases and eventually you will rank for the broad without much further effort.
Exactly as OpenMindz said. You're ranking for a less competitve keyword because it's less competitive. To rank for the main keyword you will need to work MUCH harder... but it will probably pay off if you do it right.