As far as I know this occurs when the host disconnects their connection (or loses it entirely). Migrating will work when they quit, and the connection is still active. Unfortunately, Crysis 2 is not the only game that has this happen. I have played several Black Ops and MW2 matches where this has happened as well.
I am no technology genius by any means, but I THINK this happens in (all) of these games because the host, which stores all of the match information, if they get disconnected, cannot communicate with any other console to migrate the session over (because, well, their connection is terminated). It's unfortunate.
However, if this is WHY these games have this problem, I wonder why a secondary console doesn't mirror or "backup" some of the game's information. Such as score, and stats of that round, and be recalled if the host disconnects. But again, I know nothing about that stuff.
So yeah, it svcks but it happens. Unless there is something up with your connection, or a strict NAT type, in which case I really dont know how to help you there.