Say there are three exchanges, A, B, C, each with 1k shares of Ford on offer at $20. They are all random numbers of ms away from me, and for simplicity say A is closest and C is farthest. I send out my order for 3k shares at $20, and it hits A then B then C. People who are watching A see my request, and try to make adversarial changes on B and C. They have a low chance of success on B because it's almost as close to me as A is, but they have a higher chance on C because it's pretty far from me.
One way to fix this is to delay your orders carefully so that A, B, and C will all get your order at almost the same time. Now there's not time for someone who sees your order on A to react and send a message to C that will beat your message to C.
That's not what IEX does. IEX is, to fit within your example merely exchange A. It can't control whether you delay your order to B or C or not.
What A does do is delay the output. When it receives an order it doesn't immediately broadcast that information back out, it waits some small (but relevant) period of time.
One way to fix this is to delay your orders carefully so that A, B, and C will all get your order at almost the same time. Now there's not time for someone who sees your order on A to react and send a message to C that will beat your message to C.
I believe this is what IEX does: http://en.wikipedia.org/wiki/IEX