martin: I'm afraid you're falling into a trap novice programmers sometimes make - that of generalising from a single program which you happen to have spent lots of time on. Most correctly written programs will work just fine from RISC OS 3.7 (perhaps the oldest worth caring about) to RISC OS 5 without even checking them on more than one machine. Naturally, there are always exceptions, but you're going to have testers anyway.
hzn: yes, the processor state can tell you this, and there's a very simple instruction sequence to detemine this, which has been recommended for at least 3 years. But problems arise if that check is used to assume RISC OS 5. For applications written before the A9 that need to check for RISC OS 5/XScale/Iyonix it's far from clear what might be the best course of action if it finds itself on an unknown machine, It might press ahead, and hope for the best, it might just fail to perform the action. So, there's a good chance these applications (which are a minority, however) would have to have some modifications no matter how much previously careful coding took place.