This weekend, mblsha and I had a coding sprint to make Psi XMPP-compatible, hoping to be in time for the XMPP interop event. Although we didn't make it physically to the event, we still managed to get Psi compliant.
Most of the protocol code was already present in Iris, our backend library. Apart from some small errors, the major work was to get SASL support implemented in QCA2. While I ported and implemented a bare-bones SASL implementation (supporting only PLAIN and DIGEST-MD5 authentication), mblsha ported the QCA-SASL plugin to QCA2, which provides a full featured SASL implementation (using Cyrus SASL). One of the final bricks involved supporting resource binding in the UI, such that we can get back different resource names than the ones we asked for (like the ones Google Talk uses). We briefly tested our implementation with Wildfire, some ejabberds, Google Talk, SoapBox, djabberd, jabberd1, jabberd2, and XCP, and everything seemed in order.
Unfortunately, you're not able to build a Psi with XMPP support yourself yet, as it requires a heavily patched version of QCA2. However, while we are waiting for a new beta release for QCA2, people with a Mac can toy around with it using our Mac OS X nightly builds, and start reporting problems. The Windows builds should follow soon, and hopefully we'll get a new QCA2 version in reasonable time.