Sorry guys, I don't think I explained myself very well. I was suggesting a permanently fixed block size of 1Mb, but the regulation of the unconfirmed transaction pool size by changing the hashing difficulty. This would mean that in a busy time, the number of blocks would increase, but when it quietened down, the difficulty would increase, thus reducing the number of blocks created. This could provide an incentive to miners to populate the blocks.
I can see one danger though. Selfish miners could submit unpopulated blocks to increase the pool, and thus allow them to create more blocks for higher rewards.
The problem with self regulating in a decentralized system is that there is too much information that is impossible to know reliably. Without a reliable source of that information, the self-regulating system can be manipulated and can't make useful decisions.
There is no way for the protocol to know what the current global hash power is at any given time, therefore it's impossible to choose a difficulty that will result in a known average block time for the next block. Instead, what bitcoin does is look at the total time for 2016 blocks to occur based on inaccurate timestamps in the blocks. If that total time was greater than 20160 minutes, then blocks (on average) are occurring too slowly and the difficulty needs to be adjusted so that blocks can be solved more easily. If that total time was less than 20160 minutes, then blocks (on average) are occurring too quickly and the difficulty needs to be adjusted so that blocks can be solved more easily.
Now you are suggesting that the protocol somehow be aware if there is a demand for more frequent blocks. I assume your plan is to look at the total percent that the past 2016 blocks are filled, and adjust the difficulty even further if the blocks are filled above or below some specified value? If so, then miners can simply create their own transactions to fill their blocks 100% every time. With 2016 blocks all filled 100%, how much would you suggest decreasing the difficulty? Should it be cut in half so blocks occur on average every 5 minutes? reduced 90% so they occur every minute? Now what if the blocks are still 100% full 2016 blocks later. Are you going to do the same again, so that blocks occur every 6 seconds? And if they are still 100% full, should we have blocks every 0.6 seconds?
What if the miners don't create their own transactions to fill their blocks 100% every time? If the blocks aren't 100% full, should difficulty be increased even more so the blocks come slower? How much should it be increased? If we double the difficulty then we'll get blocks every 20 minutes. If the next 2016 blocks still aren't full, should we double again to every 40 minutes? How long do we continue that? If at least on miner creates 1 empty block then the blocks will never be 100% full. That single miner with enough hash power to mine at least 1 block every 2 weeks would continue to double the block interval, 80 minutes, 160 minutes, 320 minutes?