There are at least two concerns to input validation,
- Flag to the user that the selection is invalid
- Prevent dirty data from being saved
If your user first chooses a square peg and then chooses a round hole, it could be that upon discovering a conflict she changes her mind and makes a decision for round pegs and holes instead. Allowing her to enter a round hole (even with a square peg) will help avoid her having to go back and first enter the round peg and then move back to the round hole option. That's three field navigations the user has to do instead of four, which I would consider to be a user-friendly implementation.
At form submission, there are also at least two options when it comes to dirty data:
- Either the data is so bad that it would lead to system errors, in
which case the user has to be confronted with a hard error,
- Or the combination of preferences might lead to a reduced usability
of certain features for the user, in which case an "are you sure?
you can return to solve this problem later." message could be
One website where I find this particularly user-friendly is the configuration panel for the e-store at Falcon Northwest. You can check it out and try to intentionally make a conflicting configuration to see how they implemented it here. The simplest conflict arises on this site when you add components that require power, but you don't upgrade the power supply.