While some folks felt it necessary to ignore the actual question and spend their time belittling the OP, this is actually a fixable problem.
The OP wasn't asking that the phone somehow know who had dialed from that number. OP wanted to be able to control what contact displays. Removing phone numbers from contacts is one way, but that cripples a lot of the other contact functionality (you get a call from someone who says "call me at work", you long press the Recent call entry, and call them at work...wait...no work number...go look up the company contact).
All that's required is a way (long-press, menu button, etc.) to access a setting for any given number. This setting would say, essentially, "Display this contact when this number is involved."
Now, you set everyone up as you normally would. When you get one of those irritating mis-ID'd callers, you just go in and create a new contact just for that number (in the OP's case, he'd just select that setting in Mom, instead - no new contact needed).
Every future call from that number (in my case, businesses are the issue) would show whatever contact you specified as the Show Me contact for that number.
If no contact is selected as a Show Me contact, the phone reverts to the current behaviour, which works appropriately in most cases, anyway.
For those who don't see how much of a problem this is, imagine you work at (or have as a client) a large company that routes all calls through a switchboard. You may have literally dozens of contacts at that company. An incoming call would always identify the first contact in the default search. With the Show Me setting, you'd have an additional contact set up for the company (let's say IBM). Now, when anyone from IBM calls (showing the main trunk number), you just see that IBM is calling.
I'm not an advanced enough programmer to implement this, but the change in logic is relatively small. This could actually be added to the standard Android contacts app during a future release.