Part of the point behind badges is to encourage users to work towards them.
I'm not saying this all "works" necessarily (that's another argument), but it is "the point".
Define "cannot earn"
How do you define "cannot earn" and so which badges not to show?
For example:
Custodian - Complete at least one review task
Reviewer - Complete at least 250 review tasks
Steward - Complete at least 1,000 review tasks
You cannot earn Reviewer until you've earned Custodian, and cannot earn Steward until you've earned Custodian and Reviewer.
So do we not show Reviewer and Steward until they've earned Custodian? And once they earn Custodian show them Reviewer but not Steward?
What if they see and earn Custodian, then (by chance) see Reviewer appears and go for that. Do they check back once Reviewer is earned and see Steward?
As these badges are only unlocking as they have earned the previous one, are most users not going to wonder where this ends?
What is the next one after Steward? Review 2000 posts? 5000?
A potentially worse one is:
Enthusiast - Visit the site each day for 30 consecutive days
Fanatic - Visit the site each day for 100 consecutive days
They see Enthusiast, work for it and earn it. It's a tricky badge, as people have work, families, holidays, etc.
Then days or weeks later they view the badges page out of chance and notice "Fanatic", and curse the site for not telling them of its existence when they already had a 30 day head start to earning it.
To earn Fanatic they now have to do the same work all over again they did to get Enthusiast.
I do not see any harm in showing people "what they can earn" even if it's not what they can earn "now". They can work towards "unlocking it" so they can then work towards earning it.
In some cases, the working towards being able to earn a badge brings good actions to the site.