This problem has hunted me since I started using Postgres on Windows. That is, assuming it's the same problem;
Check in your log files for something like this:
And that's the problem. When postgres is shutdown, this file doesn't appear to be deleted. To make matters slightly more irritating, deleting this file can't be done from explorer either. You need to go into a cygwin bash and "rm -f postmaster.pid".
FATAL: pre-existing shared memory block (key 5432001, ID 0) is still in use
HINT: If you're sure there are no old server processes still running,
remove the shared memory block with the command "ipcrm", or just
delete the file "/usr/share/postgresql/data/postmaster.pid".
There might be a work around for this, but unfortuntely I don't know what it is.
Hope this helps,