The implementation of such a solution (where an item/variable is only added to a list once) can be done either at the point where you're adding items to the list or after you've added items to the list.
If you do it "at the source" (while you're populating the list), then you could use a series of arrays to "remember" the items you've already added to the list and, for every subsequent item (after the first item), check those arrays to verify that it doesn't match any items you've already added. It must be done this way because the list object's items don't actually get updated in the Object Model until after the event in which you're adding the items terminates. I know, it doesn't make sense, but that's the reality of it.
If you do it after the items have been added, it's a little easier. In this case, you could write script in the drop down list's PreOpen event (this is fired as the user clicks on the drop down button just before the list is shown). In this script, you would look at the items in the list and, for every item, search all subsequent items for instances of the "search item" and remove them.
The problem with list objects is that the XFA Scripting Model doesn't offer any convenient way to get the number of items they contain and then get information on a particular item (like what its text and value are) so we're forced to go into the AcroForm Acrobat Object Model object which wraps the XFA object because that model offers the information we're looking for. It also provides the ability to remove a specific item from the list while XFA doesn't.
I've attached a sample form which implements the latter solution (check on PreOpen for duplicate items). It uses a Script Object variable to determine whether the check should be done (you don't want to do this check on every drop down because it's a potentially expensive check to do and there's no need to do it more than once anyway). It also uses the list object's AcroForm wrapper to perform the operations needed on the list. Note that the sample assumes that the drop down list has already been populated by some method.
Let me know if you have any questions.
Stefan
Adobe Systems