Why don't people buy at one exchange and sell at another? Bitcoinity.org shows that for the past 30 days, bitstamp's price is high at 101.00, low at 77.00, and current price is 98.04. On contrast, mtgox's price for the past 30 days is high at 115.00, low at 86.20, and current price is 110.50.

In other words, someone or anyone can just buy from bitstamp and sell to mtgox to make profit.

What's stopping people from doing so? What's the catch?

It can't be that people aren't aware that they could do it right?
Many people already do this with bitcoin. In finance, this is called arbitrage trading, or simply arbitrage, sometimes even abbreviated arb.

The reason for the price differences are fees for transferring between the bitcoin exchanges (you have to transfer both, bitcoins and fiat currency for a complete cycle) and fees for trading bitcoins against fiat currencies.

Because of the arbitrage traders, who make profits as long as the price difference is big enough, the prices on different exchanges quickly adjust to be right at the border between where the fees eat up the earning and where you make profits.

There is an excellent page, http://bitcoin-analytics.com , which can tell you where there currently are arbitrage oppurtunities. Simply go to the website and click on "Arbitrage".