For a block to be accepted as valid, its hash must be of a lower value than the current target. As a result, the lower the target's value, the harder it is to produce a valid block, as there's no way to know what will lower the value of the hash of a block without generating a hash. Essentially, you're attempting to brute force a low enough hash. Every 2016 blocks, the client looks at the rate at which blocks are being generated and adjusts the target accordingly such that it should take about 10 minutes for the network to generate 1 block. This ensures that even if someone did pull together an amazing amount of hardware, they couldn't generate an obscene amount of coins, keeping it from the rest of us (not for long, anyway). There's no central authority on difficulty, each client generates it individually. As each client has an identical block chain, however, each client comes up with the same target.