If you think about the sequence of steps, we can say that in order to fully instantiate this object, thread 1 needs to inform thread 2 that it has completed its part, and thread 2 needs to inform thread 3, and so on until thread N. So the chain of process is sequential that the threads must wait until the previous thread completes its job. To me, this sounds like something that you should do inside a single thread, rather than split the work into multiple threads and create unnecessary complexity.
So, I would go with the factory object idea. If you are concerned with the performance, you actually want to initialize all objects at the loading screen. Creating and destroying objects as your game/simulation is running and rendering is typically a bad idea, especially loading textures and accessing the hard drives. If you have to remove objects from the scene, you want to have a flag in your object that you can toggle on and off, rather than invoking the constructor/destructor, and have an object pool to manage inactive objects.
This way, all your objects are already fully initialized and ready to use before you enter your multi-threaded environment.