So last thing I don't get about bitcoin: Why do the miners have to send shares all the time and not only shares that solves the block? Cant the local mining software judge if a share has solved a block?
If you are solo mining there is no such thing as a share.
You just do a getwork every so often (to ensure there is not a new block in the chain that you need to take account of) and also to include more and more transactions in the block you are trying to solve.
If you find a nonce that gives the block you are searching for a low enough hash you just send that to the bitcoin network and collect your 25BTC.
With pooled mining the pool operator gives you a block (header) to solve that pays them the 25BTC. You then look for a nonce that gives the block a hash less than "difficulty 1". This is about 3,000,000 times easier to find than finding a real block.
Everytime you find one of these you send it to the pool operator as proof that you are trying. they will then pay you about 25/3,000,000BTC for each share (if PPS pool).
Every "share" that is submitted to them they check to see if by chance the hash is so small it is actually also a valid block. If so they will transmit over the network and earn themselves 25BTC. And so cover their costs.
Benefit for you is that you get a constant flow of BTC rather than solo mining where even with 800Mhash/sec you would only expect to find 2 blocks a year and if unlucky might not find one for 3 years!