You do have the right to ask people sign a contract. I know for myself it makes me hesitant to buy a dog from somebody who makes me sign one. I feel like if I pay to own the dog I have the right to breed, show etc, so I pay the extra for full paperwork. The only reason I would have a puppy buyer sign a contract would be if a puppy had defects and I wanted to make sure it was never bred. I don't believe in withholding paperwork. Everyone has the right to register their dog if they want to. A lot of people don't get around to registering but at least they deserve the option.
So far as the deposit goes, no you don't have to give them the deposit back. That's that whole point of a deposit. Otherwise you would just have 10 people saying yeah put me on a list and then all 10 could back out. If it was me, I would give the gal until the puppies are born to decide if she wants to back out or not. At least that way she can see the puppy and then decide if she wants it or not. If her gender, color, etc isn't born then she gets the money back anyways.