This question has been asked in various ways for a long time.
See here and here and here.
The answer seems to be that Widgets simply cannot work that way right now. The closest you can do is use the Conditional_tags. It’s not the easiest or best solution, but it works. I’m hoping future releases of WordPress will add some feature to improve this aspect of the widgets.
Coding it up is not difficult, but there has been debate over how to correctly implement the user interface to do this sort of thing. It’s generally agreed that the Sidebar Modules was too difficult and confusing to use.
Perhaps 2.5 and its redesigned administration screens will make this simpler to do and get it into the code.