I've used Nullsoft-Installer (NSIS) a while ago and found it quite easy to use as well as flexible:
http://nsis.sourceforge.net/Main_Page
The NSIS can create windows installation files only, however, there are numerous configuration examples to create installers for
java application as well (that can optionally install a JRE).
For users of other operations, you could just package your application as zip or .tar.gz and include a .sh file to start the file. Depends on the need of those users - most Linux users rather hav the flexibility of a .tar.gz that you can just unpack then an installer file that installs in either the home directory or /opt.
Alternatively you could also use java webstart. Java webstart will also give you the advantage your application can update itself automatically.