In performing keyword research for a number of SEO projects, I have found that one of the important factors is to quickly get beyond any preconceptions of what the targeted keywords should be for a particular client. It is all too easy to select the keyword phrases used by most of the client's competitors. If this happens, you find yourself spending a lot of time trying to rank against keywords where there are a huge number of competing pages in the search engine indices.
One technique I have found effective is just to start brainstorming. Open up a blank document and just start entering any terms that seem remotely related to the client's business. Try some variations of the basic phrases. This is the time to get a bit unconventional, following tangents and capturing terms that may or may not work. You can also use keyword research tools such as those found at semrush.com to explore keywords used by competing websites. The intent at this phase is simply to build a list.
Once you have a nice comprehensive list, I like to throw it into the Google Keyword Research tool. This can be found as a resource in any Google AdWords control panel. Running the keywords through this tool will generate a list that has fields for monthly search volumes, relative competition, and cost targets for the keywords if used in PPC campaigns. I then export this list into Excel.
I use the Excel spreadsheet to create an additional column that I reference as KEI, the keyword effectiveness index. This is calculated by dividing the monthly search volume by the relative competition. This has the effect of a significant multiplier for monthly volume if the number of competing web pages is low. Sort the spreadsheet by decreasing KEI, and you now have a ranked list of potential keyword terms. Terms toward the top of the list can yield some "nuggets" in the way of terms that can have a significant volume of monthly searches, but relatively few competing web pages.
Now go down the list and perform actual searches for the terms, being sure to first log out of the search engine you are using. This will give an indicating of whether or not the particular keyword term could be a good fit for your client. If you see a number of the client's competitors in the first couple pages of results, and the term seems to fit the client's business model, add it to the short list of keyword finalists. Once you have identified a manageable list of candidate terms, add any geographic qualifiers. This is important if the client's business is focused on a metro area of a particular city, for instance.
Finally, meet with your client and review the proposed list. It helps at this point to be able to show the client how they presently rank for the candidate terms. A big challenge at this point is often convincing the client not to dismiss the "nugget" terms you have found. These terms may not be obvious to the client, but could generate substantial relevant traffic to the client's website in a relatively short amount of time.