Instead of raising the block size to another static number like 20MB, can we raise it dynamically?

Make the max block size something like:
pow(2, nHeight/100000) * 1MB;  //double every ~2 years