Is there a mechanism to handle stale bitcoins?
If coins are lost, they are gone forever. This only hurts the person who lost the coins... and in fact it makes the rest of the coins more scarce and thus more valuable long term.

Because Bitcoins are divisible down to eight (or more) decimal places, it really means there are 21,000,000 x 1,000,000 = 210,000,000,000,000 units (and this can be divided even further with changes to the code. In practice, this means that one can always have a "small enough" unit of Bitcoin to buy tiny items. 

So if X number of Bitcoins are lost, the rest simply become more valuable, and unless a coffee costs less than .000000000000001 BTC or something, there will not even be a need to alter any code. If we were using those tiny units, a convenient name would be given to them and life would be fine and dandy.