I think the problem many people (both "believers" and "nonbelievers") have with this is simply one of notation.

A decimal number like 0.312 is defined as the sum 3*10^{-1} + 1*10^{-2} + 2*10^{-3}.

"0.999..." is defined similarily as the infinite series 9*10^{-1} + 9*10^{-2} + 9*10^{-3} + ... = sum_{i=1 to infinity} 9*10^{-i}. Such a sum is in turn defined as lim_{n->infinity} sum_{i=1 to n} 9*10^{-i}. It is clearly believable that that limit is 1, and it is not difficult to prove. (update: 10998521 gives a proof below).

Now, if there are any great deeply philosophical lessons to be learnt from this, I do not know. I think it is enough to note that if we allow "..." notation to indicate series, there can be several different decimal representations of a given number.

PS. On second thought, it is perhaps not completely a matter of arbitrary definitions. If you want the string "0.9999..." to have the value of a real number r such that r≤1 and r≥1-10^{-n} for arbitrarily large n, then the only value r can have is 1. Similar to how there are no infinitesimals, completeness of the reals means there there are "not enough" real numbers to fit between 1 and the increasing sequence of point nines. To find such a rare beast you have to move to a bigger number system, like in non-standard analysis.