Been following Gavin's proposal for O(1) block propagation times.
Maybe I'm missing something really big here, but why can't blocks simply be propagated to peers asynchronously? Once a block header that has a valid hash is received (80 bytes) start to propagate the entire block contents to one's peers rather than waiting for all transactions to arrive. The block's eventual validity still would depend on the correctness of the comprised transactions.