I want to clear up some facts which I'm seeing propagated a lot.
Dark Wallet coinjoin goes through a server, but the server cannot see any details of your transaction nor can they steal your coins. All details are encrypted for the counterparty, and all signing happens in the client.
The only weakness here is that a server gets taken down stopping the service in which case you switch to another service. Even if the NSA controlled the server, they wouldn't be able to steal your coins or observe your transaction at all.
Lastly the server is sharing messages with other servers (we are improving this too), so it isn't really centralised. It is federated kind of like how different email providers inter-operate with each other. The decentralised aspect will only improve over time as we develop standards and deploy technology.