Why doesn’t PhotoSmash plugin play well with wp_query?

There is no need to juggle $wp_query object, store it in temp, etc. It is rarely good idea to directly mess with important global variables, unless you absolutely need to.

You can just create your own arbitrary variable and init it with new WP_query

$some_variable = new WP_Query($args);

and so on.

Also don’t forget to cleanup after with wp_reset_query().