I consider the below mentioned solution as sufficient, because the HMAC of the plaintext hash and the current timestamp will be used as seed for a CSPRNG, which return value act as IV. Therefore the plaintext hash will never be revealed directly.

Code:
### Message/File Encryption using File Hash for IV ###

 P     = Plaintext
 K     = memorable Keyword
 C     = Ciphertext

 P_h   = File Content SHA-256 Hash
 seed  = keyed HMAC with SHA-256
 dkLen = 64 byte ( 512 bit)
 #i    = Iteration

 time  = POSIX Timestamp with Millisecond Precision
 HMAC  = with SHA-256
 PRF   = HMAC with SHA-256
 KBF   = Keystream Byte Function

 ||    = Concatenation of Strings


Encryption
==========
 P_h  = SHA-256(P)
 seed = HMAC(P_h, time)
 IV   = KBF(RC4, seed, 1024, dkLen)

 key  = PBKDF2(PRF, K, IV, #i, dkLen)
 Ckey = KBF(RC4, key, 1024, dkLen)
 Mkey = KBF(RC4, key, 2048, dkLen)
 C    = RC4(Ckey, P)
 MAC  = HMAC(Mkey, IV || C)


Decryption
==========
 key  = PBKDF2(PRF, K, IV, #i, dkLen)
 Ckey = KBF(RC4, key, 1024, dkLen)
 Mkey = KBF(RC4, key, 2048, dkLen)
 MAC  = HMAC(Mkey, IV || C))
 P    = RC4(Ckey, C)




KBF Function Description:
=========================
 KBF(Algorithm, Key, Drop, Byte)

 Algorithm = RC4 Stream Cipher
 Key       = passed over Keyword
 Drop      = Byte to drop after KSA
 Byte      = Amount of Byte captured from generated Keystream
 r         = Return Value

 RC4_KSA(Key)

 for i=1 to Drop
   RC4_PRGA()
 next

 for i=1 to Byte
  r = r || RC4_PRGA()
 next

Cheers,
Karl-Uwe