Derek is right. AVS is a great way to avoid having customers use a PO Boxes. Many gateways can also be told to decline addresses that don't pass AVS, too, and these typically throw a warning that card x doesn't match address x so that your customer can back up and add their street address in.
As to Patti's point about leaving a phone number, though some Gateways do require them for payment to pass, you can also make a cosmetic change to your checkout to make it appear as though the phone number is required, regardless of gateway.
Again, this could be solved with a JS behaviour in most circumstances, because JS isn't allowed to be added to checkout pages, the cosmetic change described above is often the best you can do.
The inability to hide certain seems to be a long-standing topic that has been brought up in previous posts (example here and here). And while I think that nearly all experienced developers understand the rationale behind locking down certain portions of the Shopify code (i.e. checkout) or the logic behind 'not' letting people randomly stuff scripts into your code base, the various responses from Shopify that I've seen doesn't explain why something that has so much impact on both the user and the store would be overlooked?
A previous poster even pointed to the fact that the code that Shopify uses to handle this process is available on Github and could be easily updated by Shopify. Matt R also offers a solution above. (and we realize that 'we' aren't allowed to code this on our end)
To create an analogy in a real-world setting, I see this as the equivalent of going to a gas station, pulling up to the pump, entering a credit card, saying 'no' to the car wash, and then pumping gas. The little numbers scroll, gas appears to be pumping, and the pump shuts off when the tank is full, and your card is charged. Simple as that, right?
Not the case.
When you drive back home, you take a look at your gas tank and it goes back to 'empty'. Wondering what the heck is going on you either drive back to the gas station or call them, only to hear the guy on the other end of the phone say something to the effect of 'there is a problem with the zip code on your credit card' - that it didn't match up for some reason, but that he'd gladly refund your money. You wonder, very annoyed, why the pumping system allowed this to happen in the first place...having it appear that the system was pumping gas?? Next time, you go to a different gas station because what happened was just, well...dumb.
So to summarize, after reading various topics on this - all of which seem to offer band-aid solutions - is that developers and store owners are simply asking Shopify to make right what is wrong. This request is being responded to as if it is some sort of wild customization that only a small percentage of people might need - and therefore should be placed in some kind of 'we'll-get-to-it-wish-list'. It is not. This is an oversight by Shopify that should be placed as a priority update. Period.
Please understand that this is not directed at any Shopify employee personally, but to Shopify in general. We understand that random customization requests should naturally be put in a que, but updating things that either detract from the customer experience or cause un-needed hassles with your users should be treated differently. This is one of those things.
Now if I'm missing something, a plug-in, solution or release that solves this problem, please let me know.