One guaranteed method for eliminating click fraud entirely, a method which I used on my own advertising network (since closed), is not to charge advertisers by the click or by the impression at all, but rather to allow them to bid for placement only. Whatever they bid translates into a probability that their ad will be shown for any given page request on any given site in the network. Therefore, nobody cares whether a script kiddie in Timbuktu (no offense, denizens of Timbuktu!) wants to sit and click and click and click -- or re-load and re-load and re-load -- because nobody is paying either for impressions or for clicks.
The weighted probability method also enables advertisers to bid specifically for placement on individual sites, should they wish to do so -- where their bid for that site is then pooled with a share of the network-wide bids to derive a probability for any given ad to appear on that specific site.
The only 'catch' with this method is that it does not permit real-time bidding: there needs to be some window of time during which probabilities are fixed, and that window of time needs to be reasonable for a human to manage. In my own case, I used a 1-month window, meaning that all commitments to advertise for a given month were due by a certain date, and those payments then generated a weighted probability for how often any given advertisement would appear in response to any given request to the ad server during that month. If you were catering to very hands-on advertisers, that window could probably be dropped to two weeks or even less.
Give me a shout via PM if you're interested in further details; depending on what exactly you'd like to put together, it's vaguely possible some of my old and creaky PHP code for implementing this could be of some use to you.