Okay, so here it is...
Same exact thing has happened to my wife's phone, but not mine. We even went to the store and tried a brand new phone and same thing! But...We just figured it out! Okay, so here we go...
Edit: If you are not a user of Google contacts, then do not do the merge described below because this will overwrite your phone contacts with your google contacts. Only do this step if all your Google contacts are up to date and include all contacts in your phone.
From within your computer, go to your Google contacts, the is a "My Contacts" label. At the bottom, there is an "Other" label. Somewhere in there are duplicates, so the phone doesn't know which to assign the cutom ringtone to. Go through and clean up all Google contacts, plus add the "My Contacts" to any contact that doesn't have it. Then delete any from the "other" list and any doubles in the contacts. Then, on your phone, open contacts and go to menu-more-settings-save new contacts to, and select Google. (Trust me on this one...PLASE DO THIS.) Then go to contacts, menu, and select Merge with Google. (You may lose contacts that you've put in your phone from your phone, but this is the only time this will happen.) From this point on, anything done in the Google contacts will instantly update in your phone and vise-versa, but more importantly, your ringtones should work when assigned to individual contacts.
If that doesn't work, let me know, there is one other thing to try. Good Luck!
Samsung Galaxy S2