Is there any way to check hash of homomorphic encrypted data? I need some algorithm that satisfies: 


H - hash function
Enc - encryption function (using public key) 
M - secret data
$Enc(H(M)) = H(Enc(M))$


Let this system exist: the First person has a secret data $M$, he publishes hash H(M) so everyone knows it. He encrypts data with public key of the second person and publishes it, so second can get and decrypt it. But the third person needs to check if the published hash is a hash of data that was encrypted and sent without knowing the data.
Note: I'm not a cryptographer, please take what I write below with a grain of salt. Most probably this protocol, without further fixes (or even fundamentally), is flawed. 

I'm reformulating your question as follows, dropping the hash requirement, and replacing it with an interactive proof.


Alice has a message $m$ and wants send this message $m$ to Bob.
Charlie is monitoring the public communication between Alice and Bob; and wants Alice to publicly release a blinded version of $m$; so that he can verify Alice indeed is sending the encrypted version of $m$ to Bob.


The protocol has 2 parts in it; but first let's define the parameters.


$m$ is the message from Alice to Bob
$(e,N)$ is Bob's RSA public key, $(d,N)$ is Bob's private key.


Encryption and Blinding


Charlie creates a random number $1 &lt; r &lt; N$ and announces it publicly.
Alice computes the following values:


$x = m^e \bmod N$ (RSA encrytion)
$x_{blinded} = (m * r)^{e} \bmod N$ (Note that $(m * r)^{e} = m^e * r^e$)

Charlie then, verifies $x_{blinded} = x * r^e$ (this way Charlie ensures that, $x$ indeed contains the encrypted message)


Decryption


Bob decrypts $x$, calculating $m = x^d \bmod N$ (RSA decryption)