I think you're absolutely right about needing to be able to express higher levels of abstraction with programming languages. What is needed is a language that is inherently extensible. If you can extend the syntax of a language using the language itself, you can add any of the patterns you want without having to come up with a new language.
The good news is that this is already possible. In fact, languages that can be extended in themselves already existed long before the term "design pattern." The ones I know about are in the Lisp family, like Scheme ( http://schemers.org ) and Common Lisp ( http://cons.org/cracauer/lisp.html ). However, I'm sure there are others.
I also enjoying programming in Python immensely. One of the new features of the language I haven't explored yet is metaclasses, which may also provide the extensibility I was talking about. I'm not certain, but I think that the concept originated in Smalltalk, the main focus of this article.
The more I see and read about software, the more I'm convinced that nothing new is being done in Computer Science and language design. Most of the interesting stuff has already been done and most people don't even know about it. Maybe being a Computer Scientist involves being a historian as much as anything else.