Виртуальные COM-порты предназначены для имитации реального COM-порта, и, насколько я знаю, не существует стандартного способа определить, что это виртуальный COM-порт.
Если на компьютерах, на которые устанавливается приложение, все будут иметь одинаковые виртуальные порты, вы можете сделать что-то нестандартное, посмотрев документацию на драйвер для виртуального com-порта.
Если бы вы могли гарантировать, что все имена содержат слово virtual, вы могли бы сделать:
System.IO.Ports.SerialPort.GetPortNames().Where( x => !x.Contains("Virtual")).Count();