Re: Nice... no mention of how the very first Bitcoins were minted though?
Not strictly true either. The difficulty of mining Bitcoin doesn't increase exponentially. The difficulty of mining is automatically adjusted - either up or down.
Essentially, the next hash is computed from, amongst other things, the hash of the previous block's transactions - which can't be predicted ahead of time - so work on mining the hash which comes after the next one can't be done ahead of time.
That 'next' hash which is being mined needs to have a specific number of leading zeros. The number of these leading zeros that is required varies depending on, essentially, how much world-wide computing power is dedicated to the task of mining. If the protocol detects that megatons of computer power is applied, the number of leading zeroes is increased, making the mining operation much more difficult, and keeping the rate at which these hashes are found constant (at about one every ten minutes.
If the amount of computing power which is mining was decreased (meaning that it would take longer to stumble upon a hash that fits the requirements), then, after a while, the protocol will decrease the number of leading zeros required in the 'next' hash - making the mining operation easier.
All that effort/time/money people put into mining simply makes the mining difficult and much more expensive. The rate at which someone can find Bitcoins remains relatively constant. The number of Bitcoins found each time will be reduced as time goes on. After a while, mining operations will produce no more Bitcoins.
At that time, all these mining operations will stop, and the hashing requirements will be relatively easy.
Copy'n'pasting from the Bitcoin FAQ at https://en.bitcoin.it/wiki/FAQ
== How does the proof-of-work system help secure Bitcoin?
== To give a general idea of the mining process, imagine this setup:
== payload = <some data related to things happening on the Bitcoin network>
== nonce = 1
== hash = SHA2( SHA2( payload + nonce ) )
== The work performed by a miner consists of repeatedly increasing "nonce" until the hash
== function yields a value, that has the rare property of being below a certain target threshold.
== (In other words: The hash "starts with a certain number of zeroes", if you display it in the
== fixed-length representation, that is typically used.)