I've just managed to host much of the ECL Common Lisp code on a C++ core that was built completely from scratch.
I just got ECL-CLOS and generic function dispatching to compile and run a few days ago.
I've exposed the LLVM C++ library to Common Lisp and written a new self-hosting compiler in CL.
I also wrote an S-expression walking CL interpreter to bootstrap the compiler.
It's taken me about a year working about 8 hours a day. It's my first time and I have no previous experience with Common Lisp.
Juanjo is absolutely correct, it's the interactions of the CL code with the lower level code that require a lot of time to implement properly.
This involves a lot of implementation dependent stuff that are not described in the CL standard.
When I started seriously trying to host the ECL code I had Juanjo's excellent ECL C-code to help me understand what the low-level functionality did.
Also, very important details like lexical environments are not described at all well in the CL standard and you need to do a lot of code refactoring to get something that works properly in the end.
Also, tracking down subtle bugs that I introduced because I didn't exactly implement standard Common Lisp behavior the first, second or third time around has taken a lot of my time.