This may take up to 5 minutes due to how the Bitcoin network is implemented. We have to wait for the correct number of confirmations to propagate through the Bitcoin network in order to be able to confirm a BTC transaction has occurred.
Wish we could do it faster, but this is as fast as it gets!
Also, I believe that if you've got port forwarding setup correct/your Bitcoin client isn't behind a firewall the confirmations will get out faster because you'll be able to connect to a larger number of peers (eg, without port forwarding setup I usually have ~8 connections, while with port forwarding I get ~100).
Ya, this is one of the things that bugs me most about Bitcoin… And there isn't really any way to “fix” it apart from accepting a transaction after a smaller number of confirmations.
You could have trusted third party intermediaries. If someone pays through one of those, and you receive through one of those, then it could be made instant.
Wish we could do it faster, but this is as fast as it gets!