It's a fairly poor idea - it normally indicates that your design is flawed for a simple task - but you can do it with reflection as ThePhantomUpovoter has said:
private void MyButton_Click(object sender, EventArgs e)
{
Type t = Type.GetType("MyNamespaceName.MyFormClassName");
Form f = (Form) Activator.CreateInstance(t);
f.Show();
}
To close it, you can't really do it directly - you need to store the instance and close that to ensure that you are closing the correct form - you can get the list of open forms with Application.OpenForms, but if you open more than one of the same class, it is likely that they will be pretty much indistinguishable to you.
[edit]
Pah! VB...
Dim t As Type = Type.[GetType]("MyNamespaceName.MyFormClassName")
Dim f As Form = DirectCast(Activator.CreateInstance(t), Form)
f.Show()
[/edit]