Here's the current bitcoin difficulty:
http://blockexplorer.com/q/getdifficulty.
I reduced the formula down to: average BTC per Day = (megahashes per second / difficulty) * 1005.82838
so: 100 megahashes/s at 1379223.4296725 difficulty = ( 100 / 1379223.4296725 ) * 1005.82838 = .07292715 BTC per day
Add ~1% in transaction fee wins (if paid by pool), subtract downtime, connectivity issues, and rejected block overhead, and subtract pool fees.
If you join a large pool that solves several blocks a day your results will be very close to this. If you are solo mining with a GPU, it is more like a lottery - although stats say it would average eight months to win 50 BTC at current difficulty with a good ATI GPU, you might win it tomorrow or you might never win in your lifetime.
Difficulty increases are calculated every 2016 blocks based on the past performance, which are every two weeks if the bitcoin network hashrate is constant. Since the network keeps on increasing it's computing power, the recalculation happens more often than that.