Also that is available in constant / neverending supply in endless quantities without some inventor / creator dishing it out who might have some kind of inside track on doing it.
So far nothing was thought of that fits those requirements as far as I am aware.
But if you have done your searches you already know all that, right?
-MarkM-
The first of those "hard to do but easy to verify" isn't such a huge problem.
The second "no central delegator of work" is also not too big a problem in terms of making the concept work, but IS a major issue in terms of making the work efficient.
The real problem I encountered when I considered a similar issue is finding work which is useful AND which can't be done before the previous block is published to the chain. Bitcoin gets around it by making data from the previous block the key element in the calculation - hence preventing someon stock-piling a bunch of solutions in advance then using them to double-spend later.
You can't get anywhere near a good solution by doing some hybrid (e.g. solving some useful problem then hashing it with the previous block) as either:
a) The hashing part produces no protection due to being too easy (allowing stock-piling of results and double-spending)
or
b) The hashing part is very hard - making the 'useful' work just a cosmetic change with the bulk of the work being done just as in Bitcoin. And even then it STILL reduces the power needed to double-spend.
There ARE ways to try to solve this - such as using the hash of the previous block plus the public key of the miner's wallet as the seed to generate a starting point for work (assuming work can be found which can be apportioned based on a key/hash - not too hard if you consider all work can conceptually be split into a number of pieces and any key can be converted into a number in a specific range). You would then need a function which could take this combination of hash/key and generate a seed. That seed would then be used as the starting point for a search in the target domain. You'd then need some limit set on what was considered a reasonable depth from that starting point to be a valid result.
It would still be horribly inefficient - as you couldn't track who'd done what work without finding a valid result (there'd be no incentive for miners to report work that found no result - as it would be against their interest to prevent others expending effort rechecking it on later blocks). For a large enough domain of work that wouldn't be a huge issue.