Didn't really have any time on holiday or a lot of time last week, but I've been looking into it, and it looks like a miniature web server is relatively easy to hook up (see, e.g.
http://www.ibm.com/developerworks/systems/library/es-nweb.html — "a simple Web server with only 200 lines of C source code"), so I propose that for cross-platform compatibility and to make things reasonably self-explanatory, a spec be based on the emulator running a web server, probably (or optionally?) on a non-standard port (in case the user wishes to run a real web server too), responding to URL-based queries with JSON or XML (as long as we pick one, does it matter which?) responses.
My feeling is that this will add hopefully only a few hundred lines maximum for the communication layer to most emulators, which tend to be C or C++ based, and slot nicely with the various bits of framework provided natively by C#, Objective-C, Java, Delphi, etc, since it'll just be asynchronous HTTP fetches with the usual language stuff for chucking results back into the main runloop (or whatever your language uses) once they're ready.
The debugger will be able to query and set machine state (which is defined broadly to include registers, memory contents, current screen display, raster position, etc — will possibly need someone from a BBC background to fill me in on various bits of state that aren't in the memory map, I guess stuff like the current screen display that is a record of events already occurred can be queried but not directly set), set conditional breakpoints and request that the emulator run according to a certain principle (eg, forever, for one frame, for 234 cycles, for 16 opcodes) or pause as soon as it is able.
Is this an acceptable way forward? If so, I'll try to produce a draft spec of some sort.