I have a Logitech Harmony 520 remote, and it's good about either knowing or learning the behavior of every other remote I have in the house. I have it set up to control a TV, receiver, PS2, DVD/VCR combo, and so on. It handles it all well, and as long as you don't confuse it, it works every time.
The problem comes when someone manually turns on a component, or if the signal was blocked while turning on (or off) one. All it can do is remember the state it thinks it left everything in, and work from there. If you want to watch a DVD, and it thinks that it was just watching TV, but you were really playing a video game because you switched the inputs manually, it'll set you up on the wrong input.
I'm pretty sure that this could be handled by having the system send data both ways. The remote sends a signal to a component, and the component responds. Then it could know how everything was set up, and wouldn't have to guess and remember. "Oh, I'm on AV1, I thought I was on DTV/Cable, no bother, I'll just switch to the next in the cycle."
I think this would make the whole remote idea a bit better. It's not something that can be changed by just a new remote, though, as every component manufacturer would have to include the functionality in their components. Maybe that should be something to be standardized?