I made a gameboy emulator in C# using many of the techniques explained by Casey.
As mmozeiko said, you have less control over what exactly the memory does, but that is no limitation to implementing many of the features (say, dll reloading) without having to even modify the memory management. That technique relies in having a conscious packing of the state, rather than some language specific construct.
Now, you have to keep in mind of what are you trying to accomplish in C#. Handmade hero is purposely low-level, both in it's API approach to the system and (specially) the use of the resources provided by the machine. Having a managed language makes it difficult in achieving that (though there is a fair amount you can actually do). But the "architectural" side of handmade hero is portable pretty much anywhere.