It would be useful to support coinjoin in the client and GUI. This would allow people to combine their transactions with random other people to increase privacy. (See https://bitcointalk.org/index.php?topic=279249.0 for @gmaxwell’s original proposal)
The simplest implementation would be ‘where the users send their input and output information to some meeting point server, and the server creates the transaction and asks people to sign it.
~~The server learns the mapping but no one else does, and the server still can’t steal the coins ~~
This server would be set in the configuration, and could be a TOR hidden service for extra privacy.
Initially this would be a simple (http/https based?) protocol that drops the transaction plus a timeout value and a way to request the current status. Later on, this could be extended with blinding, and/or a solution that does not rely on servers (or relies on P2P network changes, for example with @lukejr’s proposal https://gist.github.com/luke-jr/5409899).
in the RPC and GUI this requires a way to queue transactions with a configurable timeout. The transactions will then either be queued locally, or if one is configured, sent to the meeting point server.
(commented out my original proposal, making use of an existing system, e.g. joinmarket would be much better than reinventing the wheel)