I look at the scaleability discussion where one of the problems is the blockchain grows in size too much so that specialized storage systems will be needed which will lead towards centralization.
I wonder whether the blockchain cold be distributed between the nodes in a way that Torrent works (Distributed Hash Table) so that every node would not need to store whole blockchain but could ask its peers for the parts it does not have. I know this would assume some level of trust between the nodes but it is the same as when a node downloads the blockchain for the first time today.
Every node may only store blockhashes (and check they are valid from the genesis block) and after it receives the block wanted via torrent just check for hash again to see the block contents are correct.