I've seen many C++ coders code in a COM style in C#, trying to deal with the inadequacies of the language. C# provides lots of a type safe support for your enums and there are usually nicer APIs then P/Invoking back down to C++.
The other thing I've seen catch most people out is that C# generics are not templates.
Thinking that "garbage collection" = "I never have to worry about object lifetime at all". For instance, opening a FileStream and forgetting to close it.
Or:
Confusing "pass by reference" and "reference type":
void GetAnArray(int input, ref string[] output);
(Compare with C++: void getAnArray(int input, std::vector<std::string>& output);)
Writing the full namespace each time.
This is fine in C++ when you're typing std::this or boost::that. Not so great in C# when you repeat System.Windows.Forms.Whatever all over the place.
Forgetting to specify access modifiers for every class member.
One that got me, and I believe a lot of non C++ people too, was leaking memory due to registered events keeping an object alive.
IDisposable grated to begin with (and still does if I'm honest) but was pretty obviously going to be a difference when going from native to managed code so it is not something I'd expect C++ developers to actually fall foul of, they just won't like it.
using Hungarian Notation and other C++ naming conventions
private int m_iMyIntField;
class CWidget { ... }