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()
.