How does bitcoin prevent someone from sending more money than he/she has?
This is called the "double-spending" problem. There's an excelent article on the Bitcoin Wiki that covers the entire mechanism. 

https://en.bitcoin.it/wiki/Double-spending