Actually, I found out how to get rid of that annoying error message. The reason for that error is that really roslaunch openni_launch openni.launch is trying to publish twice some of the topics.
I am using ROS Electric, but I think the following also applies to Fuerte:
Taking a look at the file openni.launch one can see that, among other things, it includes another launch file
<include file="$(find openni_launch)/launch/includes/device.launch">
Then, the file device.launch includes (very elegantly) some other launch files
<include file="$(find openni_launch)/launch/includes/rgb.launch" ns="$(arg rgb)">
<include file="$(find openni_launch)/launch/includes/ir.launch" ns="$(arg rgb)">
<include file="$(find openni_launch)/launch/includes/depth.launch" ns="$(arg rgb)">
<include file="$(find openni_launch)/launch/includes/depth_registered.launch" ns="$(arg rgb)">
...
The problem is that the launch file depth_registered.launch includes again the launch file depth.launch, but this time with a flag to disable the generation of the point_xyz generation. I don't know why it is doing it, I see no reason for it considering that depth.launch is already running.
So, a workaround to the error of this post is to comment out the following from the depth_registered.launch file
<!-- Get all the usual depth topics -->
<include file="$(find openni_launch)/launch/includes/depth.launch"
ns="$(arg depth_registered)">
<arg name="manager" value="$(arg manager)" />
<arg name="points_xyz" value="false" />
<arg name="bond" value="$(arg bond)" />
</include>
If you comment those lines, the error goes away and everything seems to work just fine.
I hope this could be helpful for you too.