Three things that work for me:
1) Choose a new software language and resolve to learn the basics...enough to get beyond "Hello World" but not much further than manipulating a simple input.
2) Advance knowledge in my specialties: It seems that there are always better ways of doing something in SQL. Even the new release of Enterprise Manager holds some genuinely useful features. The idea is to explore some of the changes that have occurred during the last couple of releases.
3) See if a co-worker needs help: the message here is that sometimes it only SEEMS like there's a complete lull in work. But often I look around and find that somebody is actually feverishly trying to finish something that I could lend a hand on.
THREE THINGS THAT HAVE NOT WORKED FOR ME DURING PROJECT LULLS:
1) Going beyond the basics when learning a new language that I have no hope of using in the near future: I've spent too much time trying to read a book cover-to-cover only to find that only a fraction of it is retained by the time I finish...and only the very basics after a month or two of disuse. I might as well have just studied the basics to start with.
2) Complaining that I have nothing to do. I learned the downfall of this early onin my career. And after having been on the management end, I understand how frustrating it is to try and find something for a whiner during a slow period. My solution is to work on training that I don't normally have time for...education is reallywhat the company is paying me for anyway.
3) Surfing the Internet for news: It seemed valuable at the time, but honestly, I'm no better off for following day to day changes in the war. It's not like the important details weren't summarized in 30second radio reports anyway.