I got this idea for how to implement a fully p2p mining protocol. It's based on how Bittorrent works. Tit For Tat.
The way mining pools work currently, is that they credit you for each share you mine. The share serves as a proof that you're actually mining what the pool wants you to mine. However, the pool is not really needed. Individual miners can just as simply each mine separately and cooperate by proving to each other that they're including each other in the blocks they're mining.
So, basically, Tit for Tat. When someone sends you a share that includes your mining address in the coinbase transaction, you can return the favor by mining a share that gives equal value in return and sending it back, proving you did so. when two miners both do this, this will cause a chain reaction that will continue until one of them stops mining.
Now, imagine all miners doing this with many others. You could effectively control your variance by varying how many others you do this with. Other ways to the same effect would be adjusting share difficulty and the amounts paid to others in coinbase.
To get things started and find trustworthy mining partners, you can optimistically mine for other miners to find out which of them are willing to return the favor.
Well, that's about it. Let me know what you think.