Welcome to the professional world. You will spend the rest of your life working with people of all commitment levels, from those that don't care at all to over-achievers that will never let you get anything done. Experience has taught me that you cannot control what someone else does (especially someone over whom you have no authority)... only what you do and how you react.
Take a deep breath
It is great that you are enthusiastic about what you do, and for any of us that are passionate it isn't uncommon to have a healthy level of annoyance at unprofessional behavior. Annoyance is normal, especially when your name starts getting dragged into it. Realize, however, that there is nothing you can do to fix her. Slacking is her choice, and making an issue of it with her directly is simply going to create conflict. It is her supervisor's job to monitor her work and gauge her progress.
Do the best you can
Keep doing a good job and people will see it. As mentioned by others, when she gets asked to report on progress an never gives anything but vague answers, it is pretty obvious what is going on. When you are asked to report, focus on the way you changed the world, and forget about what she didn't do. If you have a decent manager they will see your accomplishments and you will be rewarded appropriately. If you don't have a decent manager, well, you probably don't want to play that game anyways.
Be consistent and document
Make sure your accomplishments are documented. You don't have to parrot your every line of code, but having good check-in notes, frequent and consistent check-ins, a work log, and a history of responsiveness to requests will go a long way towards pointing out where the problem lies.
When things go wrong
When a project doesn't get done on time, people will come looking for answers. Be prepared to present your evidence and let it speak for itself. I've seen a lot of developers that can do little or nothing for a while, but eventually they are expected to produce something and can't, and their lack of skill or professionalism quickly comes to light.
Don't cover for someone else
If you see someone consistently putting forth little effort and you are going out of your mind trying to get work for two done, don't. If you are supposed to be pair programming, send an email breaking down the tasks. "Sally, we need to do X, Y, and Z. Which ones did you plan on taking?" Don't jump in and do it. When asked, simply say, "Oh, Sally wanted to work on that and said she would have it checked in by PDQ." If it doesn't happen, then she has to explain it.
If she blames it not getting done on you, that is when it is time to talk things out with the boss. Approach it constructively. "Mr./Ms. Manager, I really want to complete this on time, but I haven't gotten any code check-ins from Sally all week, and I am afraid I am going to miss the deadline." Let the boss figure out why Sally isn't checking in code.
Don't make assumptions
People seem to think that busy == productive. I've worked with folks that could produce more great code in an hour than others could in a week. This might not be the case for Sally, but something to keep in mind going forward... Sometimes people also log in from home to complete projects, or simply haven't been assigned enough work. The point is, you don't know if someone gets all their work done before breakfast and has nothing to do all day. Their manager needs to figure it out.