Load some images:
size = {200, 200}; foot = ImageResize[Import[ "http://upload.wikimedia.org/wikipedia/commons/a/ab/Monty_python_foot.png" ], size]; spikey = ImageResize[Import[ "http://upload.wikimedia.org/wikipedia/en/b/bf/MathematicaSpikeyVersion8.png" ], size]; mse = ImageResize[Import[ "https://i.sstatic.net/yjrEY.png" ], size];
Crop them, squash them, transform them:
feet = Table[ImageCrop[foot, size {1, k}, Top], {k, 0.1, 0.9, 0.1}]; spoke = Table[ImageResize[spikey, size {1, k}], {k, 0.9, 0.1, -0.1}]; logos = Table[ImagePerspectiveTransformation[mse, FindGeometricTransform[{{0, 0}, {1, 0}, {0.5, 0.5} + {-(1/(-2 - 2 Cos[t])), (-4 - 3 Cos[t] + 8 Sin[t])/(8 + 8 Cos[t])}, {0.5, 0.5} + {1/(-2 - 2 Cos[t]), (-4 - 3 Cos[t] + 8 Sin[t])/(8 + 8 Cos[t])}}, {{0, 0}, {1, 0}, {1, 1}, {0, 1}}][[2]], Padding -> White], {t, 0, \[Pi]/2, \[Pi]/40}]; squish = Table[ImageCrop[logos[[1]], size {1, k}, Top], {k, 0.1, 0.9, 0.1}];
Assemble them together:
a = ImageAssemble[List /@ #] & /@ Thread[{feet, spoke}]; b = ImageAssemble[List /@ #] & /@ Thread[{Reverse@feet, squish}]; c = logos; d = ConstantArray[Last@logos, 5];
Animate:
Export["logoanimate.gif", Join[a, b, c, d]]
