Todd, we do the same. Collect copays upon check-in. If they claim "I forgot my wallet," my staff have been known to say "that's alright, run home and we'll still see you. But bring back the wallet with your copay."
Patients never complain about paying up front b/c that's been the policy for years. We've had a couple of grumblings like "what if I don't like his service?" and my staff reply with a smile "you have to pay whether you have service you like or not, so pay up Mr. Smith."