Everything on the board runs off of 3.3V (3.0-4.0V is ok so it can run directly off of a LiIon) don't even think of running it at 5V!
The microcontroller is PIC18F452 (in particular, the 18LF452, which can run at 3.3V), the 'really nice' PIC. Lots of RAM/ROM and can run a bootloader. The PIC reads and writes the compact flash card (for playing mp3s and uploading/deleting mp3s), reads button presses, and configures/runs the STA013 mp3 decoder chip. It understands the FAT16 file system format, although it ignores long filenames. The best way to use it is to program it with a bootloader, such as the tinybld'r, and then upload new firmware as desired through the serial port. Using a bootloader is much faster and doesn't require a PICStart/ICSP programmer.
The MP3 decoder chip I used is the STA013, which is the only one I could find to purchase easily (going rate is $12) in the US (Mouser sells it and Digikey carries the more extensive STA015T which also does MP3 encoding, PJRC also sells it for a very good price. Also FutureLec has it for a paltry $7!)
The MP3 chip is controllable via an I2C port, to set the volume/bass/treble, upload new firmware, get the current mp3 data, start/stop etc. It then signals that its ready for mp3 data by pulling the MP3REQUEST line high, after which the microcontroller sends the file to the STA013 via SPI.
A lot more information is available from PJRC's 'how to use the sta013' page. This is a strictly 3.3V chip.
I didn't use the VS1001K or MAS3509/MAS35x9 because they were not as easy to get.
For a DAC I use the CS4340, which you can buy from Newark for $2.50. They make up for it by charging $12 shipping. I would highly suggest that it get replaced by something like the $2.70 PCM1748 stereo audio DAC, which is carried by Digikey or can be sampled for free from TI. (So, I haven't gotten off my ass and actually figured out how to replace the CS4340 with the PCM1748, it has a different pinout and I'm lazy. Feel free to make the change and send me the update!)
If you want to drive headphones instead of line out, I wouldn't use the cap/resistor values in the datasheet, since they seriously attenuate the signal. Try 10 instead of 560ohms and a beefy 33 or 47uF cap instead of 3.3uF to keep realistic 3db cutoffs (see the PCB schematic).
Or better yet, measure the capacitors and make sure that the low -3db point is ~120Hz and the high -3dB point is >>20kHz
My digital camera went bust so I had an extra 128M compact flash card. The nice thing about CF is that it's pretty damn cheap (you can get a 512M card from CostCo.com for $50). Cheaper & faster than multimedia cards (MMC) and can be accessed via a PCMCIA slot, as all PC laptops have, using a $5 adaptor (although you can read/write using the Java program MintyComm program talking through the serial port).
One nice side-effect of using CF cards is that they 'talk' ATA so it's easy (design-wise) to swap it with a full IDE drive in case you ever need to access a large amount of data (a car mp3 player?)
In case you want to run this off of 1 or 2 alkaline/rechargables there is a DC boost regulator on board, the MAX756, which will step up a 1V supply to 3.3V @ 300mA. A little pricey at $5 from DigiKey, but you can sample them for free from Maxim's website. Theres even a 'low battery' indicator but it seems sort of counter-productive to burn more power through an LED.
I hate not having an audio cable to hook up a player to a car, so instead, I put the incredibly cool MAX2606 (only available in low quantities by sampling) all-in-one FM transmitter chip in. Wow! Very low power only a few mA, so I didnt even put in a switch for it.