Blockchain long run issue
This is explained in Satoshi's original paper:



Basically, the block hash does not contain the hashes of the individual transactions, rather it contains the root of the Merkle tree of the hashes. Once all the bitcoin outputs of a transaction have been fully spent, then there is no need for the original transaction, and hence its branch is chopped off from the Merkle tree. As time passes, all the branches get chopped off and one is left with just the root.

So, let's say someone gives you 1 BTC in transaction A (which has no other outputs). You give it away in transaction B to someone else. After a few more blocks have been generated, I have no reason to doubt that transaction B is valid and since A cannot be referenced anywhere else (it is already spent), it is safe for me to remove A from my blockchain.

Of course, some entities may keep the entire chain but this is not strictly necessary for bitcoin to work.