A friend and I started writing one in 2002 or so. We never got it fully completed to release it so it stayed as Acorp PoC OS (proof of concept). If we kept it obsolete it would have been easier but we had it reading fat12, fat16, and I think we were working on fat32 but what killed the proof of concept project was memory management (protected mode). It was difficult for us to wrap our heads around the memory address matrix and at that point became much more work than fun which killed the mood of the project. We got it working but it was such a PITA and we had to look at other code to figure it out which kinda sucked in my mind.
The next part was going to be other OS compatibility and internal debugging (another one of those "how the heck do we.." concepts which we had some of it working after a while) but we had it reading files off the floppy, and basically if it was written with bios interrupts it could run stuff by typing the name of the file. So we were going to start emulating some of the MSDOS interrupts, then start emulating other OSes. The point was actually to port our OS to other obsolete systems (6502, Z80, etc) but after a while became difficult and too long to really be portable.
I wrote most of my stuff in debug which had it's moments, then testing on a virtual machine was interesting but we ended up with a few bugs in the VM software and had to use a spare system or two to test it each time.