To put it in a little more simple terms that explain the concept of mining bluntly:
For the sake of this explanation, let's say your computer is a super old computer that can only do calculations very slowly.
When your computer mines, it is generating random values over and over again, let's say numbers between 1 and 1,000,000.
To get a block of bitcoin, the random value it generates must be below a certain number, for example 100,000. So on average, your super-slow computer would get a block after 10 attempts, since 100k is a tenth of one million. To ramp up the difficulty, the number it must be below can be decreased to 50k, making it twice as hard, or further to 10k, or 1k, or 1, etc.
The bitcoin client dynamically sees how fast bitcoins are being created and adjusts the difficulty here and there so that the speed blocks are gained at will always stay at an average of 10 minutes per block. And as people before me have described, every 210k blocks the amount halves. So when we reach 210k blocks, the reward will be 25 bitcoins per block, not 50.
See the current block count of all of Bitcoin here: http://blockexplorer.com/q/getblockcount
Hope that answered some questions.