It is like to find an ad agency - you have to ask yourself e. g.:
- Where am I or the targeted market oriented? (Do you want a company from different city/state/country/continent?)
- What is my budget? (Some SEO agencies are focused on small budgets, some on enterprise level.)
- What kind of work or cooperation I am looking for? (Some agencies are experts in link-building, some in information architecture, some can offer everything on very high level.).
You can try http://www.sempo.org/?page=member_directory but it is not useful in all countries nor some good SEO companies are not participating.
Another resource is http://www.topseos.com/search-engine-marketing-companies/seo/, but less reputable.
You can find some SEO experts even here: http://www.seomoz.org/users and http://www.seomoz.org/marketplace/companies..