you may find these useful :
Design Patterns: Elements of Reusable Object-Oriented Software
Head First Design Patterns
Pattern Hatching: Design Patterns Applied
Refactoring to Patterns
Patterns of Enterprise Application Architecture
(but the last two are a bit advanced)
Joshua bloch's book Effective Java is useful even thought its not about design patterns but it's a must read.
Two good books which deal with the how and when (not) to use Design Patterns are:
A design pattern can make your software worse if you misuse it, applying it in a wrong situation. Common sense should be the perfect companion for a design pattern.
The misuse of patterns sometimes is associated with a lack of understanding of the forces associated with the problem and the pattern proposed solution to that problem. Also the intent of the pattern could be misunderstood leading to misuses.
To a better comprehension of patterns you also need to learn about the Anti pattern concept and read a lot more than the GOF book. One suggestion is to read Pattern Hatching to complement GOF's concepts.