As you've discovered, modifying the product name isn't sufficient. You need to modify the assembly name.
Details from http://weblogs.asp.net/sweinstein/archive/2008/08/24/top-5-secrets-of-net-desktop-deployment-wizards.aspx
  The most important thing is having
  support for multiple environments -
  this isn't built in, and if you
  attempt to deploy two different
  ClickOnce builds with the same
  deployment name to different sites,
  the latest build will take precedence
  and effectively overwrite the existing
  deployment on the desktop.
  
  The fix for this is relatively
  straightforward - you need to provide
  different deployment name for each
  build. Like so -
<MSBuild 
   Projects="ClickOnce.csproj"
   Targets="Publish"
   Properties="
            MinimumRequiredVersion=$(MinimumRequiredVersion);
            ApplicationVersion=$(ApplicationVersion);
            ApplicationRevision=$(ApplicationRevision);
            CodeBranch=$(CodeBranch);
            DeployEnv=$(DeployEnv)
            AssemblyName=ClickOnce.$(DeployEnv);
            PublishUrl=$(PublishUrl);
            ProductName=ClickOnce $(CodeBranch) $(DeployEnv)" />
  The one limitation of this approach is
  that project references will no longer
  work. Use file based assembly refs,
  and it'll be fine.