If some incomplete software is released as GPL, is it GPL forever? Or can you re-license it?
Assume that all the code was written by only one person, they received no contributions.
There's no way you can rescind the GPL on the software you have already given someone. The only way that license is allowed to be changed is to a newer version of the GPL. Whoever received it as GPL will always be free to use it and redistribute it to others under the GPL.
However, if you hold the copyright on the software, you can do whatever you want with it yourself. That includes releasing it to someone else under whatever licensing terms you chose. So if you want to change a future version to be BSD, or dual-licensed, you are free to do that. If you want to sell it to some company with a closed-source license, you can do that too.
A popular option lately is to release a GPL version, and sell more permissive licenses to people who want to use the software in a closed-source program. For instance, that is how Red Hat and Ada Core make money off of their GPL compilers.