Plotting over multiple pages
Exactly. Page 39 of the ggplot2 book tells us that when you create ggplot2 objects, you can "Render it on screen, with print(). This happens automatically when running interactively, but inside a loop or function, you'll need to print() it yourself".
I think the problem is that you need print() around your last line (p+ ...) to get it to actually print to the device inside the for loop . . .