I apologise in advance; after all that explaining, I feel any response I could give will be inadequet.
It sounds like you have a lot going for the pair of you that you really don't want to lose. If I was in that situation, I think (I've never been there to know), I'd think seriously about what I wanted, and try to factor her in after; she seems to be going after what she wants so you should do the same.
If you still want her, and are patient enough to wait it out, tell her you understand her situation and are willing to see what happens; be willing to compromise and see if you both can ride it out. It seems a lot of the problem is outside influences, like the puppy and the distance, as opposed to a direct problem between the two of you? I may be wrong there, but if that's the case, it might be beneficial to take it easy for a while and see what happens. The best thing to do is talk about it; it's not going to go away so don't try to pretend it isn't there.
On the other hand, if you aren't happy waiting, tell her so. Explain how confused you feel and that you don't think she's being fair on you and you want to work out a solution now.
The worst thing you could probably do is not do anything about it; either explaining you want to wait or making the two of you come to a conclusion and losing her completely. Maybe due to circumstances or whatever it won't be possible that the two of you stay together (I hope not), but surely in that case you'd want to do it as a mutual thing and both accept it and stay close; losing your girlfriend and a close friend is twice as bad as just losing a girlfriend, right?
I'm not sure how well I've explained myself, but I've tried to explain what I think I'd do. Whether it fits your situation at all, or if it's any use, I don't know, but best of luck with it all the same.