We did a proof for this in my analysis module. Went something along the lines of this:
Let x = d0.d1d2d3... with di in the set {0,1,...,9}.
From our definition of the decimal, we have that x = sumn=0 -> infinity(dn*10-n). So for 0.999 we can say that for i > 0, di = 9. Hence if we let x = 0.999, then we have:
x = sumn=1 -> infinity(9/(10^n)).
This is a very easy geometric progression, and if you work it out, you get x = 1.
The other proof (which I'm somewhat dubious about) I learnt at GCSE (when I was 16):
x = 0.999, so 10x = 9.999. Now subtract one equation from the other, so you get 9x = 9 => x = 1. As I said, I'm dubious to say the least