Is it normal that adxl345 gives spike from time to time? I am just reading some signal and suddenly there is a large reading not justified in real movement.

I do my reading like that "if adxl345 interrupt stays high (adxl has got some data)" then:

    while (  digitalRead(interruptPin) == HIGH) {
      delay (100);
      temp_roll  += (atan2(xyz[1] , xyz[2]) * 57.3);
      temp_roll /= 2;
      temp_pitch += ((atan2(xyz[0], sqrt(xyz[1] * xyz[1] + xyz[2] * xyz[2])) * 180.0) / M_PI);
      temp_pitch /= 2;

and you can see that i am doing something like "rolling average" but even with this method from time to time there is a "jump". I cant really ignore that because welll... i am looking for such jump but the real one (coming from rapid movement).

Have you looked at the raw data to see it it is jumping or just the results after calculations? If your raw data is jumping you might have a hardware problem. If the raw data is fine and the calculated results spike you might be encountering discontinuities in the axis like gimbal lock.