robot_markers is a C++ library that produces visualization_msgs/MarkerArray messages given a URDF. You can set the color, pose, etc. of the markers. A key feature is that you can set robot joint values and see what the robot looks like. This is useful for visualizing hypothetical robot poses. See the wiki page for a quickstart and link to full documentation.
We have tested and used this on the PR2 and Fetch robots. I have also informally tried it on other URDFs. The package is built for ROS Indigo, but feel free to look at the source and try it on other versions of ROS.