Я бы переключил его на использование ключевого слова is, поэтому
else if (obj is Dictionary<string, System.Collections.Specialized.StringCollection>)
, который будет совпадать, если obj имеет этот тип где-то в своем происхождении.Если вы попытаетесь сравнить только по точным типам, это может не сработать.
Если это все еще не сработает, то я бы поместил типы в переменные и проверил их в отладчике, чтобы увидеть, что на самом деле происходит.