ты половину кода выкинул?
Да нет, не выкидывал. Только запостил код файла Form1.cs
Весь проект состоит из 2 файлов : Form1.cs и Programm.cs
Вот их полные листинги :
Programm.cs#region Using directives
using System;
using System.Collections.Generic;
using System.Windows.Forms;
#endregion
namespace SerialTest
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.EnableRTLMirroring();
            Application.Run(new Form1());
        }
    }
}
#region Using directives
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.IO.Ports;
#endregion
namespace SerialTest
{
    partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
                serialPort1.PortName = "COM1";
            }
            else
            {
                serialPort1.PortName = "COM1";
                serialPort1.Open();
                if (serialPort1.IsOpen)
                {
                    label1.Text = "COM1 Port : port is opened successfully!";
                }
                else
                {
                    label1.Text = "COM1 Port : impossible to open port!";
                }
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            label1.Text = "COM1 Port : port successfully closed!";
        }
        private void serialPort1_ReceivedEvent(object sender, System.IO.Ports.SerialReceivedEventArgs e)
        {
            string data = serialPort1.ReadLine(); // Вот тут вылетает эксепшн
            label2.Text = data;
        }
    }
}
как ты присобачиваешь функцию serialPort1_ReceivedEvent к serialPort1? 
Юзаю Visual Studio 2005 Beta1. Там на вкладке Components есть стандартный компонент SerialPort. Кидаю его на форму и в его эвенте ReceivedEvent создаю  private void serialPort1_ReceivedEvent(object sender, System.IO.Ports.SerialReceivedEventArgs e)
этот эксепшн постоянно вылетает или иногда?
Всегда, когда срабатывает serialPort1_ReceivedEvent