Is it Possible to Dynamically Change Object Materals?
Dynamic paint is basically an automated painting system, you define a canvas and brush and together they generate an image (unless saved into vertex data such as vertex colour or group). This image can be used just like any other image within blender.

As shown in Miika's documentation you can use the generated image to adjust various texture settings within the blender internal materials. One example that appears to be omitted is the stencil setting (in the influence panel), this enables the texture layer to be a mask between higher and lower texture layers.

Within cycles you can use an image as input for the Fac value of a mix shader. As the final mix in a material you effectively choose between two different materials. You could also use it at any stage to mix any part of the node setup or input any specific value of a single node, like noise scale or emission strength.

Using nodes with the blender internal render you would input into a MixRGB node instead of a MixShader node to get a similar result.