@ Pete Brown - The LPC111x chips used on the DL40 support being updated/flashed via the UART. The only trick is toggling the loader and reset pins to put the device into ISP (In-System Programming) mode. But everything can be done using managed code without any additional hardware or firmware support other than the standard GPIO and UART capabilities.
The process and protocol is described in Chapter 26 of the user manual.
To be honest, I found the GHI source is much easier to read and understand than the user manual, I also ported the code to the Cerberus (the port is on codeshare) using a button and the debug window to replace the touch+LCD interface.
This is a super nice little chip, it hardly needs any external components to run, no crystal required etc. all pins are interrupt capable etc. etc. If you are interested, I have a general purpose daisylink firmware that provides access to most the capabilities of the DL40
Binaries : http://www.tinyclr.com/codeshare/entry/633
Source : https://dl40io.codeplex.com/
I have no idea as to whether the STM32 chips support this capability, would be interesting to know.