Bease you've put this...
attributeValuesDropDown.Items.Add(new ListItem(attributeValue, attributeValueId));
...statement in a foreach loop which runs through each item exists in cart everytime a new item has to be added in list.
So all previous items will get filled in again and the new only once.
I suggest to use this stement before the statement of filling...
attributeValuesDropDown.Items.Clear()
... however this is unnecessary clearing of all items exists in dropdown list before adding all the same once again. But it will eliminate your issue.
Otherwise you need to apply some logic through which you don't have to put this statement in loop...
Good Luck!