There are several ways to do this, but I would probably do something like this. Let's use the Hulk example.
Start with two separate meshes with different vertex counts, Hulk shape and man shape (sorry I don't know the dude's name, haha). Make a copy of the Hulk mesh and move the vertices around so that it matches the man mesh perfectly. You can use the shrinkwrap function, or snap to mesh to align it perfectly. Then wrap it to the man's mesh, or copy over the rig skinning. Now you basically have the Hulk mesh, with the same number of vertex points, perfectly aligned to the man, with the same skinning as the man.
Now you can use a simple blendshape, or multiple shapes, or a custom rig, to animate the transition. At the transition you can animate the visibility to switch from one mesh to the other, but perhaps another option that would give you more control would be to blend them in comp, using a cross dissolve of a few frames and then you wouldn't get a sudden pop, but a nice smooth transition.
For the textures, you would have to do a texture projection from the man to the newly created Hulk-as-man mesh, and yeah, probably render two passes with the different textures and blend them in comp, or use a layered shader and animate the opacity if the materials are simple enough.