On one hand I like the book, I feel the layout and presentation of each pattern is well done, concise, yet you can grasp the main point of each pattern. Each pattern is explained, implemented, further examples are given, uses are explained and then each pattern is wrapped up with a series of exercises.
On the other hand, the book has many typos, the exercises are a very mixed bag and sometimes the explanation are incorrect or incomplete and it is hard to understand why the author really did what they did or the full implications. This really is a mar on an otherwise solidly presented book. The errors did make me dig into the details and I did learn more from my digging. So, if you are willing to work around these warts than you will learn something but for a beginner the level of frustration may not be worth it. For example the Observer pattern blog example, which uses events with a dictionary was not explained in enough detail. If you looked, you would have found something along the lines of the MSDN article "How to: Use a Dictionary to Store Event Instances (C# Programming Guide)" but you had to look for it.
This also applies to the C# 3.0 features that are presented in the book, again citing the example above. The Mediator pattern has a sidebar on delegates and events and it explains in a very high level what you need to know to implement events stored in a dictionary but unless you use sources outside the book you will be missing out on a lot.
The exercises are varied, some are excellent and they really force you think about what the pattern is about and sink your teeth into the details. Others just seem like they are there to fill space, others do not seem thought out well enough. For example in the Decorator pattern one of the exercises asks you to decorate System.Console but you can not do it using the methods presented. You can use a wrapper but that is not really decorating, so you are left wondering what the real intent was or even worse did you miss some key point.
So overall, even though the book does have warts, it definitely useful, you will learn about the GOF design patterns and come away with some useful knowledge on C# 3.0 and beyond that. I would suggest using the book with a critical mind, try to pick apart the examples and experiment with them, test the authors claims and find the mistakes. My impression is that this book needed another revision and some sections feel like they were in the process of being revised but the book was shipped before the process was done.
If I could I would give the book 3.5 stars, it is still very useful but the warts are painful and coming from O'Reilly that is disappointing. Some have mentioned the "Head First Design Patterns", also by O'Reilly. I have to say that if you want to learn design patterns from a Java perspective I would probably recommend that book instead.
BTW, A previous reviewer had claimed the Observer pattern example did not work but I did not have any problems getting that example to work.