Premetto che la prima frase sembra complessivamente incoerente (se non era un sogno allora avevo sognato). Non avendo a disposizione un contesto più ampio, però, sorvolerò su questo aspetto.
La sostituzione di era con fosse stato è possibile; oltre a innalzare la formalità, però, questa scelta cambierebbe leggermente il significato della frase. L'indicativo imperfetto, infatti, riesce a coprire le funzioni del congiuntivo trapassato pur rimanendo indicativo imperfetto, quindi continuando a svolgere anche quelle previste per questo tempo dalla grammatica standard. In questo modo se non era un sogno signfica contemporaneamente 'se non fosse stato un sogno' e 'se non era un sogno', ovvero 'se in quel momento io non stavo sognando'. Questo secondo significato, inscindibile dal primo nella frase con era, viene ovviamente perso nella frase con fosse stato.
Nella seconda frase la sostituzione è possibile tecnicamente, ma costerebbe probabilmente il tradimento delle reali intenzioni comunicative dell'emittente. Se era veramente questa la situazione, infatti, non è una vera proposizione ipotetica, ma è una causale travestita da ipotetica (se era = visto che era). Di questo tipo di proposizioni si parla nella risposta n. 2800840. Se sostituiamo era con fosse stata la frase continua a essere corretta, ma il significato della proposizione cambia da causale a ipotetico, modificando sostanzialmente il senso di tutta la frase.
Fabio Ruggiano