I don't quite understand why yet. It keeps hanging forever on the line in StopRPCThreads that deletes the rpc_io_service:
delete rpc_io_service; rpc_io_service = NULL;
So it never properly shuts down. The curious thing is that it gets through all the (assumingly) more time consuming steps before it like joining all the working threads. Removing the line fixes shutdown (but leaks a pointer, so isn't a workable solution).
Haven't tested in Windows proper yet, but usually I've found that Wine is very good at detecting subtle bugs so I am filing this. This happens in the gitian-built executable.