After hearing everything, I believe this is so far the best method proposed:
1) A boolean flag is added to each block. The flag represents the block solver's yes or no vote for increasing the block size. The independent miner or mining pool sets this flag according to their preference for an increase.
2) Every time the difficulty is adjusted, the number of yes votes is counted from the last adjustment. If the number of yes votes is greater than 90%, then the block size is increased by 1%. Both percentages are baked-in constants, requiring a hard fork to change.
I don't like any of my other proposals for the reason I don't think any of them can accurately take into account all of the complex variables that determine if the block size should increase. The increased bandwidth requirements of a larger block size should weigh into the decision of whether or not to increase it, which is something that Gavin's proposal does. But it happens in a fragile way that requires measurements and doesn't come to a rapid consensus.
The voting method is the simplest and most robust way for increasing the block size, because it lets individual miners choose whatever method they want for making the decision. Some may decide that bandwidth matters. Others may want simply to limit the total scarcity. Voting is a proxy for deferring the implementation of the "decision function" for raising the block size to later. It gives us a flexible system that requires most of the mining community to agree, without tying us down to a specific formula like doubling the size periodically or requiring difficult to agree on measurements.
The optimum method for increasing the block size would have to factor in the exchange rate, people's tolerance for fees, and the effects of the increased bandwidth requirement. I do not believe this can be modeled in an automated fashion. Therefore, we solve the problem in parallel by letting miners try to solve this complex equation for their own use-case and vote on the result.
The 90% and 1% figures are just examples, other values may work better (but once they are published they can never change).
I'm not sure whether or not I am in favor of even increasing the block size. There is definitely a strong argument to be made for just leaving it alone. However, if we do decide to increase the block size I think this is the best method so far. I would love to hear counter examples or criticisms.