Ok. This is happened to me and I believe I have figured it out. Please, if, after reading this, you have questions to ask me, post it here but please PM me and let me know you asked a question because I will not be checking back here on my own volition.
When you FIRST texted a contact with yours on your iPhone, you made the mistake of texting from a contact entry (in "Contact.app") whose number you did not append an area code to (probably because they live in the same area code you do). Phone call wise, this is not a problem as the iPhone assumes they live in the same area code you do if the contact does not have an area code on their number. But texting-wise, it's a no-no. The PERENNIAL problem arises when one, frustrated by getting "use a valid 10 digit number" error, manually inputs the phone number in question (along with an area code) into SMS.app. For that particular instance, it will work. But in the future, since the iPhone's SMSs' are threaded, whenever you hit that contact name in SMS.app and attempt to write out a message to them, unbeknownst to you, the iPhone is pulling the number it should use to text them from the Contact.app entry....That's right....The same contacts.app entry that DOESN'T have the area code. To make matters worse, even if you CHANGE the contact.app entry and add the area code, SMS.app will still be using the number (w/o the area code) in the future, causing you to still get errors. The only way to fix this is to completely erase the conversation with said person, add their area code in Contacts.app, and then start a whole new threaded SMS convo with them. Hope this helps.