You don't want to sound completely rehearsed so why not just play off visual clues? For example if she wears her hair up alot and then wears it down one day, you could say, "Wow you should wear your hair down more often. It's smokin' like that." Or something like that. A general statement like "you look pretty" is nice to hear of course, but a personalized compliment is more memorable to me.
And as far as timing goes, it's really up to you. You never know when there is going to be a good time. Do it when you feel it.
“Inside every cynical person, there is a disappointed idealist”--George Carlin