One of the most frustrating things about being an intern is that you're easy to neglect. When you aren't paid much more than unskilled labor, management can afford to treat you as such. On the one hand, you aren't too likely to lose your job assuming you do decent work. When you're paid very little, no one's going to worry about how much your income is cutting into the bottom line. And it would cost half your salary just to replace you.
But on the other hand, it's just as cost effective to have you mop the floors as it is to have you write a new kernel module. I'm not saying this actually happens. However, in a less extreme form, your employer can afford to completely ignore you or give you menial tasks or completely waste your talent in other ways. Think about it. If you were making $100 an hour, the boss would want you designing and implementing code full time. You wouldn't be filling out paper work or making web pages. Someone might even higher a full time QA engineer to relieve you of the task because those jobs usually pay less.
Really, the whole point of an internship is for you to learn. The company that hires you gets the benefit of cheap labor and a possible employee in the future. You get experience and some spending cash. The employer knows he's getting someone unexperienced. If you're able to do even reasonable work, you have upheld your end of the deal. But how many internships actually attempt to teach the intern something. Many are just low paying jobs, and you're being exploited.
The most difficult problem I've had is just finding work. Now, I've noticed some people are just better at knowing what's going on and taking on responsibility. If this isn't you, pay careful attention. The first thing you should do is try not to allow yourself to get too locked into one project. If you can, keep current with other projects. If you don't, you may find yourself perpetually in the state of waiting for the next task. This is a bad position to be in. When your employer isn't constantly worrying about whether your being productive (because you don't matter), you have to take control of your projects.
Don't allow yourself to become stuck doing the same repetitive thing every day. If you're not improving yourself, you may actually be decreasing in value. (Never mind the fact that this would drive me mad.) Whenever you're not busy, start researching new technologies. Experiment with new software development methodologies. Learn some of the advanced features of the language you use and see if you can apply them to your work. Propose your great ideas to your boss. The worst thing is to waste months accomplishing nothing at all. That's rotting.