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.