Make sure they are in the Address Book on your iPhone. The ID will resolve itself via the Address Book if the Caller ID itself can't be resolved. The caveat is that this is an entirely manual process on your part. I get phone calls from the UK here in the US, I've never gotten Caller ID to resolve on its own, but as long as the number and name is in the Address Book, then I know who is calling.
There is probably a jailbroken-phone method, but I don't know anything about that to provide a reasonable answer.
UPDATE per your comment: The format of the number received and the number in your phone has to match. I have the impression the OS is looking at the numbers with a simple string comparison, so it's an all-or-nothing scenario. I had a problem with this until I copied and pasted the numbers in the call log into the Address Book entry, then everything eventually worked out fine. Sometimes I get the odd formatting (I'm guessing it depends on which carrier's calling card was used), but now I have a tidy collection for each entry on valid phone numbers. It's still manual, and it's still a hassle to maintain at first, but it was the only way I saw around the problem.