When I think more about this problem in philosophical manner, I always end up with answer to question "Why we need governments"

How, Sir?
To solve the blocksize problem, I wrote a proposal -
http://upalc.com/maxblocksize.php. This is now being discussed among devs. If any of you have any input to provide, feel free to share.
Upal, the suggestion you make is to make the blocksize dynamic. This is same as keeping a large block size. For eg, if the block size was 50 mb, it does not mean that each block is 50mb even if it is not filling up. 50 mb is the 'upper limit'. So all the blocks, after calculation & decision as suggested by you, would be equal to the size of transactions in queue, a.k.a mempool.
I think you are concentrating on the wrong part of the problem. People are not saying that blocks sometimes are not full. Everybody agrees that that in future the blocks would get full as the transaction rises. So as per your algorithm it will simply keep rising to meet the demand. This is same as having no blocksize limit.
Anyways, dynamic blocksize has been proposed and discussed many times and there are many variations of dynamic block-size limits here :
http://bitcoin-development.narkive.com/cr8x2evb/bitcoin-development-various-block-size-proposals