Multiplexer not switching any audio input
The most obvious thing I see is that your mux inputs are not ground-referenced. That is, you should have a largish resistor to ground on each analog mux input. If you don't, there is no way to control the "resting" level of the inputs. Try something like 100k.

Second, tie your floating R and S inputs on IC6 to ground. NEVER leave a CMOS input floating - you won't believe the weird things that can happen.

EDIT - In response to a question in the OP comments, you stated that "doesn't work" means that you get no sound from headphones.

Well, there you go. You're not going to, either, with the MAX359. I'm going to assume that you understand impedance/resistance. If you look at the datasheet characteristics (page 2), the very first line is ON resistance, and you should note that typical will be about 1.2 k. A headphone (earbud) will typically have an impedance of about 32 ohms. This means that the signal power at the headphone will be about (32/1200)^2 of normal, or something like 1/1000 of what you expect. 

You might try something like this: start by cranking your iphone volume all the way up. Now, make sure that your area is really, really quiet - and I do mean quiet. No background music. Wait a few minutes listening to dead silence. Now put on your head phones and listen, switching between channels and see if you can't hear a faint signal on your desired channel.

The MAX359, and virtually all analog mux ICs, are simply not intended for power switching. They are intended to drive high-impedance loads, such as the input to a subsequent amplifier stage. So, I'd suggest you get an amplifier stage to connect your output to. And a simple op amp won't do very well either, since their outputs are usually not real happy driving loads of less than 500 - 1k or so. Plugging into a headphone amp would be close to ideal.

END EDIT