Three things really have helped me out:
1) Perform Code-Cleanup on your own code
I have found many times going back through to improve formatting, optimize some routines, boil out magic numbers and words with variables, I can normally find a few ways to improve on my codebase, or at least see what I would do better the second time around. This especially applies to older code I may not have touched in a year.
2) RTFM / Read Programmers Blogs / Check out some Open Source/3rd party APIs
I learn something new every day. If you haven't been, you aren't looking hard enough. Sometimes even the most mundane problems, I will do a quick search to see if the top three answers take an angle to the problem any differently. Occasionally, I will find a rare gem, and many times that method can casade to all sorts of other problems. I used to not touch AJAX with a 10-foot pole. Now I use it with most everything. XML used to be a mystery to me, now its a absolute must-use.
3) Try something new
Usually, if you have an idea floating around in the back of your head, it means you want to improve your skills. At the very least, you might end up creating something that will make your life a bit easier as a programmer. But more often than not, no matter how challenging, daunting or impossible the task might be, in the end you will learn from it even if you fail. if you succeed, you have another notch under your belt.