Hardware
In the beginning, mining with a CPU was the only way to mine bitcoins. This eventually gave way to mining on graphics cards (GPU) due to the fact that the massively parrallel nature of some GPUs allowed for a 50x to 100x increase in minging power while using less power usage per megahash compared to a CPU.
While any modern GPU can be used to mine, the AMD line of GPUs architecture turned out to be far superior to the nVidia architecture for mining bitcoins and the ATI Radeon HD 5870 turned out to be the most cost effective at the time.
For an extensive list of graphics cards and their performance in Bitcoin mining, see the Bitcoin Wiki: Mining hardware comparison
As with the CPU to GPU transition, the bitcoin mining world has progressed to using Field Programmable Gate Arrays (FPGA) as the primary mining hardware platform. While FPGAs do not enjoy a 50x - 100x increase in mining speed as was seen with the transition from CPUs to GPUs, they provide a benefit through power efficiency. A typical 600 MH/s graphics card will consume upwards of 400w of power, whereas a typical FPGA mining device will provide a hashrate of 826 MH/s at 80w of power, a 5x improvement in power efficiency. Power efficiency can make or break the profitiability of mining, so it was an important step to move from GPUs to FPGAs for many people.
The bitcoin mining world is now moving into the Application Specific Integrated Circuit (ASIC) era. An ASIC is a chip designed specifically to do one thing and one thing only. Unlike FPGAs an ASIC can not be repurposed to perform other tasks. An ASIC designed to mine bitcoins can only mine bitcoins and will only ever mine bitcoins. The inflexibility of an ASIC is offset by the fact that it offers a 100x increase in hashing power while reducing power consumption compared to all the previous technologies. For example an entry level mining device from Butterfly Labs provides 60 GH/s (1 Gigahash is 1000 Megahash. 1 GH/s = 1000 MH/s) while consuming 60w of power. Compared to the GPU era, this is a 100x increase in hashrate while reducing power consumption by a factor of 7.
Unlike all the previous generations of hardware preceding ASIC, ASIC is the "end of the line" when it comes to disruptive technology. CPUs were replaced by GPUs which were in turn replaced by FPGAs which were replaced by ASICs. There is nothing to replace ASICs now or even in the immediate future. There will be stepwise refinement of the ASIC products and increases in efficiency, but nothing will offer the 50x - 100x increase in hashing power or 7x reduction in power usage that moves from previous technologies offered. This makes power consumption on an ASIC device the single most important factor of any ASIC product, as the expected useful lifetime of an ASIC mining device is longer than the entire history of bitcoin mining. It is conceivable that an ASIC device purchased today would still be mining in two years if the device is power effecient enough and the cost of electricity does not exceed it's output. Mining profitability is also dictated by the exchange rate, but under all circumstances the more power effecient the mining device, the more profitable it is.
Software
There are two basic ways to mine: On your own or as part of a pool. If you're mining on your own you need to start by setting up your Bitcoin client and set it up for JSON-RPC (see: Running Bitcoin). The other option is to join a mining pool. There are several pools to choose from. With a pool, the profit from any block a member generates is divided up among the members of the pool. The benefit of joining a pool is that you will receive a more frequent, steady payout (this is called reducing your variance), but your payout(s) will be less. Ultimately, you will earn the same either way. Solo mining will give you large, infrequent payouts and pooled mining will give you small, frequent payouts, but both add up to the same amount.
Once you have your client set up or you have registered with a pool, the next step is to set up the actual miner. The most popular GPU/FPGA/ASIC miner at the moment is CGminer or a derivative designed specifically for FPGA and ASICs, BFGMiner.
If you want a quick taste of mining without installing any software, try Bitcoin Plus, a browser-based CPU Bitcoin miner. As a CPU miner it's not cost-efficient for serious mining, but it does illustrate the principle of pooled mining very well.