This is a simple technique, but it's tremendously flexible. You create a vector field using fractal Perlin noise, and store it in an image like the one below (in this case, the red channel represents the X component of the vector, and green represents Y. The blue is just there to look pretty.)
Then, you use those vectors as offset values, and for each pixel in your image, substitute the color of the pixel pointed at by the vector. The result is that your image gets warped. The naiveté of this approach makes it very fast, but there is no sub-pixel accuracy or anti-aliasing, so it's only suitable for large amounts of distortion such as you see here:
One trick you can use to soften up the hard edges you'll often get this way is to apply some Line Integral Convolution to the image using the same vector field. This is also a great way to fake motion blur when you're doing an animated warp.