This may be semantics, but the iterator should diligently return the next item without regard to when it will end. Ending is a side effect for a collection, though it may seem like a common side effect.
Still, what's the difference between infinite, and a collection with 10 trillion items? The caller either wants them all, or he doesn't. Let the caller decide how many items to return or when to end.
I wouldn't say the caller couldn't use the for-each construct. He could, as long as he wants all the items.
Something in the documentation for the collection like "may be an infinite collection" would be appropriate, but not "infinite iterator".