I'm using Monogame for my project. One thing to watch out for is some rather nasty bugs in Monogame. I haven't updated my SVN checkout recently, but I've had to fix a few; I can't remember what they all were, but one example is that .png files weren't loaded correctly (slightly different pixel color values because of some mistake in a color matrix transform or something), which could lead to bad results with stacking transparent images.
Some major things I've done myself, probably because I couldn't find any libraries for them that I wanted to use:
1) Keyboard input handling (Monogame's default setup is abysmal).
2) Automatic texture atlas generation from individual images.
3) Automatic serialization of any object.
Smaller things include RNG, particle systems, logging, etc.
All that being said, I still think Monogame is the best option for 2D graphics in C#, if performance is needed.