You will not be able to do this with a custom value list. A single table listing these values with different relationships can be set up to produce conditional value lists that do what you describe.
i saw some of the post about having to setup a table that relates the records. Any way to avoid this. It would be great of the I could setup the filter within the db relationship, but I didn't see any way to do this. Also, related, if I have a drop down list, that comes from a value list, is there a way to manually add an item to the drop down list using a script?
You'll need a table and relationships to it. Keep in mind that with one data source table listing all your user names and departments, you can create mutliple relationships to it by creating multiple table occurrences of this same table so that you can set up, for example, a relationship for a value list that will only list IT users and another relationship for a value list that lists only managers--all from a single table.
If "table occurrence" is an unfamiliar term, this thread may help: Tutorial: What are Table Occurrences?
Since you will be using a table for your conditional value list, it's possible to use a drop down list with it so that users can type in values not currently in the list. An OnObjectSave script trigger can then compare this value to the current value list and add a new record with this new value to the table. It can even pop up a dialog for confirmation before doing so to help keep typos from generating new values in your value list table.