At my unpaid internship, I came in with no programming experience. They basically paired me with sr. programmers so I could learn how to program efficiently, but was still too inexperienced to give me actual client work they could charge for. Believe me, I wouldn't want to charge the client either for the crap that I put out initially. But their investment will eventually pay off because when my skills strengthen enough to meet their standards, they'll hire me.
http://bit.ly/13kxv3
Nobody paid us to do that, but that debugger work is now Ragweed, our house debugger, and we've got it working under Win32, Linux, and a couple embedded platforms. It's extremely useful. And we scored an excellent blog post out of it.(Timur works for us full-time now, of course).
I don't have to compromise the work we deliver for our clients to put interns on useful projects. And we're a special case: we do hard core programming work on a billable basis. Most of the companies people talk about on HN don't have that problem. There's a million useful things an intern can do without jeopardizing product quality.
So your (somewhat strange) questions, broken down:
"Apply for and get a job" --- Check.
"Work however many hours they want" --- You need to make a commitment; you can't just come in Wednesday this week and Friday the next week. But if "however many hours you want" means "I'll give you days X, Y, and Z of every week", then, Check.
"Wouldn't be expected to produce work we could charge for" --- I have no idea what this even means. Who produces work for no reason at all? Of course we're going to want you to do real work.
"And still get paid" --- Check.