Well overall the idea is working. Heres a summary:
Normal mode dosbox works as normal only using the sdl.surface.
When an OSD is turned on the sdl.surface is copied to sdl.blit.surface and all updates are then made to sdl.blit.surface. I then blit sdl.blit.surface and then my OSD to sdl.surface.
If all the OSD's are turned off I copy sdl.blit.surface back to sdl.surface and dosbox runs as normal.
There is some very minor flicker but its basically the lcd having time to update bewtween the sdl.blit.surface blit and the osd blit.
But the good thing is that the OSD can be turned off and on with no ghosting occuring.
Since then ive also added a virtual keyaboard using sdl ttf, which acts as an osd.
I hope to release everything this weekend.