I started working on this but for the Java platform so it worked anywhere. I was taking the approach outlined - picking an app and getting it to work by seeing which SWIs it used. It also seemed sensible to choose an app for which source was available and which was pure assembler to avoid having to implement SharedCLib or Basic interpretation straight off so I'm using StrongARM. I've got the core ARM emulation mostly working (some mishandling of the call stack still) and a framework for plugging in SWI implementations in Java. The idea is that the program gets built in blocks and pure Java versions of performance critical sections could be substituted for certain blocks or a Java compiled bytecode version could be substituted for the semi-interpreted version for blocks. Being Java, the question of which GUI library or platform quickly becomes irrelevant and the APIs are not a bad match either in most cases.
Anyone interested in getting involved, please get in touch.