Stando a quanto dice MSDN, il metodo File.OpenWrite apre un file esistente per la scrittura. Il file, dunque, deve esistere, come confermato anche dalla lista delle eccezioni che possono essere lanciate dal metodo: se il file non esiste, viene generata una FileNotFoundException. In realtà non è così:
FileStream fs = File.OpenWrite(@"D:\Prova.txt");
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Hello World!");
sw.Close();
fs.Close();
Se il file Prova.txt non esiste nell'unità D:, esso è creato automaticamente dal metodo File.OpenWrite, quindi il codice sopra riportato viene eseguito senza errori e produce il risultato atteso.