Glad to hear it’s going so well.
Your programmer uses the SPI hardware interface, the MISO, MOSI, and SCK pins (PP3, PB4, PB5), which is also what reads the SD card and how the mp3 chip and the AVR communicate. It’s not fully shown in your schematic, but I assume you have those pins wired both to the SD socket, the mp3 chip, and a programming header?
You might be able to program the board with everything hooked up by simply removing the SD card, or you may need to have a way to physically disconnect the mp3 chip and SD socket (a super-easy solution, if it works). Can you program the AVR if you connect it’s SCK pin (PB5) only to the programmer, but leave everything else the same? If so you can put a jumper in your soldered board to cut this connection when you want to program the chip. A third option would be to have a removable power jumper for power to the SD card socket and mp3 chip. Actually now I’m worried that programming with the SD card in is a bad idea anyway, since it could do unexpected things to the data on it.
Another option, once you have your software how you like it, you shouldn’t be making frequent updates, right? Instead of soldering your ATMega168 to the perf board you could buy a DIL IC press-in socket for it, like part 22-0175 from Rapid. This way when you want to change the software you’ll actually be able to pull the AVR off of your board, put it back in your breadboard and program it there by itself. If you wanted to get really fancy, you could get a ZIF socket, like part 22-1565 from Rapid, and wire up a permanent programming board. ZIF stands for “zero insertion force”, which you don’t have to press it in, just drop it in and turn the lever.
In any case, it’s very easy to damage a chip by soldering directly to it’s pins, so in any case I would recommend buying the DIL socket, soldering that to your board, and just pressing the AVR in.
Good luck with your crazy wiring!
-Adam