My two still arent great by any means. but the best advice I got was do the following:
May need 2 people for this. Get your dog, and a ziplock bag of treats and go to the nearest pet co, petsmart during busy hours. Go up to every person in that store and tell them that you are trying to teach your dog to greet properly. Tell them to say hi " (name)" and if they sit, or 4 paws on floor they can give your dog a treat. All I have to say is that by the end of the 15min visit everytime addie came up to anyone new she would lay down! I wouldnt even have to ask (she started the laydown on her own, I had asked her to sit) the theory is that in the pet store most people are pet friendly and will understand.....now if you carry it over into the house it works just as well. Now I let her training go so we are back to square one on guests.