As a copyright holder you can license the code any which way you want, again and again and again. You could license it as GPL, and then have a client ask for a license for the MS-Pl for one of their projects, and then license it again under BSD...
You, the copyright holder, always have the power to decide to release the work under a different license. You can't revoke how people got it previously, but you can always release it under a new license.
That 'you can't revoke' does have some implications. If someone went to your GPL version and forked it form there, with their contributions being GPL licensed, that code would still be GPL licensed.
The license is something you use to instruct other people on how they can use your code - and the license for it sticks with it. It never limits how you can use it or decide to license and relicense your code.