Sand - 1:26 pm on May 21, 2013 (gmt 0)
Without knowing any specifics, my recommendation would be this:
Don't just look at the pages that are ranking above you. It's too easy to say 'oh that's crap, Google doesn't know what they're doing.'
Instead, take a step back and look at entire body of the sites that are outranking you. What information do they have that you do don't? How is their information organized in ways that yours isn't? Are there any opportunities for you to develop your content strategy in a way that would make your site more similar (in terms of information architecture) to the people who are doing really well?
I think this is a worthwhile thing to do, not only for the obvious reasons. More and more, I suspect that Google is using the universal semantics of a given site to evaluate the relevance of any particular page on the site for a query.
In years past, ranking was more or less on a page level -- get the right title, keywords, alt tags, etc on a page and you would rank. But that's obviously not true anymore. Panda and Penguin have shown us that they are more than happy to make decisions on the domain level. I believe that sites are evaluated for relevancy, authority, etc, and then pages from those sites are returned.
Site-wide semantics seem to be really important. More than once, I've been able to get my homepage to rank for its target terms by adding those terms across the site and not actually touching the homepage itself.
Of course, I have no hard proof that site-wide semantics are so important to individual page rankings. But it's something I've come to believe.