It is possible that display :0 is locked by a previous failed\crashed vnc session.
You can kill the :0 session by running:
vncserver -kill :0
From vncserver man page:
 -kill :display#
      This  kills  a  VNC  desktop  previously  started  with
      vncserver.   It  does this by killing the Xvnc process,
      whose   process   ID   is   stored    in    the    file
      "$HOME/.vnc/host:display#.pid".    The   -kill   option
      ignores anything preceding the first colon (":") in the
      display  argument.   Thus,  you  can  invoke "vncserver
      -kill  $DISPLAY",  for  example  at  the  end  of  your
      xstartup file after a particular application exits.
You can also check if the lock files are still there. here is the relevant files, from the man page:
FILES
       Several  VNC-related  files  are  found  in  the   directory
       $HOME/.vnc:
 $HOME/.vnc/xstartup
      A shell script specifying X applications to be run when
      a VNC desktop is started.  If this file does not exist,
      then vncserver will create a  default  xstartup  script
      which attempts to launch your chosen window manager.
 $HOME/.vnc/passwd
      The VNC password file.
 $HOME/.vnc/host:display#.log
      The log file  for  Xvnc  and  applications  started  in
      xstartup.
 $HOME/.vnc/host:display#.pid
      Identifies the Xvnc  process  ID,  used  by  the  -kill
      option.
For example, I started vncserver with :22 and then killed it (twice):
[raamee 25 0 ~]$ vncserver :22
New 'myhost:22 (raamee)' desktop is myhost:22
Starting applications specified in /home/raamee/.vnc/xstartup
Log file is /home/raamee/.vnc/myhost:22.log
[raamee 26 0 ~]$ vncserver -kill :22
Killing Xvnc process ID 22733
[raamee 27 0 ~]$ vncserver -kill :22
Can't find file /home/raamee/.vnc/myhost:22.pid
You'll have to kill the Xvnc process manually