Никогда не пытался привязать словарь к источнику данных элемента управления или источнику привязки.
Может быть, это невозможно.
Почему бы вам не использовать свой CategoryList в качестве источника данных (для BindingSource или напрямую)
combo1.DataSource = categoryList
combo1.DisplayMember = "CategoryName"
combo1.ValueMember = "CategoryID"
или если вам нужно сохранить позицию:
dim bs as new BindingSource(categoryList, nothing)
combo1.DataSource = bs
combo1.DisplayMember = "CategoryName"
combo1.ValueMember = "CategoryID"
или создайте List(of category)
вместо словаря.
кстати. трассировка полного стека всегда полезна.