Are all of your contacts listed with the full, 10-digit phone number? Incoming calls will have the full number with area code, and if it is listed in your contacts with a leading "1" (not needed) or just the local prefix and #, it won't "match" your contact and so will not show the name.
If your caller has their # blocked (like most of my friends who call from their landline) it will come in as unknown or restricted,even if the # is in your contacts. The number is hidden as it comes in so there is nothing to match it to,
If neither of these seems to apply to your situation, post back and we can explore further. These are the most likely reasons, though.