Implementing a Ripple-style system entirely within a single program isn't too hard. It boils down to parallel graph search algorithms. If you assume participants are not entirely anonymous you can optimize by assuming trust relationships exist between people who live near to each other and using that as a heuristic. Seeking out and destroying circular debt is a harder problem to do at scale, but once you manage it within a single computer decentralizing it Bitcoin-style is an easy next step.
The single-computer/non decentralized Ripple is already implemented. Maybe circular debt destruction could be enhanced but with the decentralized implementation the system can't do it on its own.
A node would have to start the "circular transaction".
So I think the project is ready to focus on the decentralized implementation.
The main problems I see with the block chain ripple implementation are:
1) Enable instant transactions. Otherwise the "ripple between e-wallets to achieve instant bitcoin transactions" use case is not valid.
Maybe this can be solved with a variation of the "instant bitcoin transactions through confirmed escrow" concept. But an escrow of IOUs seems very strange to me. Maybe I just need time to believe it.
2) Spam attacks. After all, anyone can create two nodes and pay from one to the other. Since there's no limit in the IOUs a node can create, there's no limit creating transactions.
I think this could be solved by miners always requiring transaction fees (which can be paid in bitcoins or other chain cash).
For the non block chain ripple protocol, the main problem is atomicity (and expiration of intermediaries promises), which is solved through registries. Although I advocate for a bitcoin scripts-like extension as it would be far more generic and would also enable registries.