When should you use a library or a framework vs your own implementation. For example. MVVM, should I use Cinch/MVVM Framework or roll my own code?
With MVVM and WPF, personally, I would recommend starting without a framework.
Once you see the "sticking" points, the different frameworks will start to make a lot more sense. Remember, the various frameworks for MVVM are meant to be "helpers" to ease some of the pain points when dealing with MVVM (such as dialog/service handling, messaging, etc).
That being said, many of the frameworks (ie: Cinch) really steer you into working a specific way - which may or may not be ideal given your circumstances.
I personally don't use a single framework. I'll borrow ideas and inspiration from a framework if required, but have found that most of the frameworks try to do too much.
That being said, once you understand the different frameworks, they are very useful, provided the one you choose fits with your development goals. For example, MVVM Light provides a fantastic, well thought out and tested messaging framework that dramatically simplifies many difficult tasks in MVVM, so it's a great way to get some functionality in place which is quite robust.
Use a framework. Writing your own framework on for a project, that has a deadline is not a very good idea in most cases. For a hobby project, yeah why not make a framework. In your case you can look here:
If you're allowed to use a Framework for the project and assembly size really isn't that important, I'd almost always recommend going with the framework (academic projects not included).
You'll get something that has been (usually) thoroughly tested and documented rather than experimenting and troubleshooting your own hand rolled version.