When I first got the (used) Google Galaxy Nexus phone that comes equiped with Android R.4.0 (ICS), I am quite impressed with the user experience of this phone.
I spent two days making the new phone to act like the current one, e.g. installing the applications, setting up email and twitter accounts. That's when I also noticed some of the contacts are not syncing to this phone.
First thing first, check if they are still there in the previous phone (Nexus S, R.2.3). Yes, it is.
Second, check if those are synced correctly to my Motorola Xoom tablet (R.3.0, HoneyComb). Yes, it is.
(Hence, it is not the syncing problem!!!)
Then there is a suggestion from the Twitter friend that they may be named as "Unknown". Nope, not there.
Third, check to the core storage of the contacts, i.e. Gmail account. Very sure, they're there.
[So, why not syncing to ICS???]
It turns out the Google decided to sync the contacts that have valid phone numbers only. This behavier has been changed starting with ICS.
[Why on earth, contacts with no phone numbers!!!]
Some of you may puzzle why on earth I am having contacts with no phone numbers inside.
It is that I use contact to store "extra" information that will be "portable-to-every-phones" even outside Android devices.
For example, I note information, e.g. direction to warehouse, grand-pa favorite drinks, things-to-buy, into the "note" field in the contact.
[So, how to fix this syncing issue]
A quick unprofessional fix I did is just set the phone number to "1". The contacts are now correctly sync to my Galaxy Nexus phone.
I'm a happy man then again!!!