Absent any agreement of copyright assignment, Alice and Bob individually hold copyright over each piece of their own code.
If Alice decides to sell the work under the terms of the GPL, it's no different from a third party attempting to sell a GPL-covered work -- it's completely allowed. Both authors offered the code under the GPL, so anyone can use it and redistribute it (for free or at cost) under the terms of the GPL.
If Alice doesn't want to redistribute the project under the GPL, she can only distribute the code that she personally wrote. As the copyright holder of her own work, she's fully entitled to redistribute it under a different license:
The GNU GPL does not give users permission to attach other licenses to the program. But the copyright holder for a program can release it under several different licenses in parallel... If you are the copyright holder for the code, you can release it under various different non-exclusive licenses at various times.
However, as she is not the copyright holder of Bob's work, she only has legal access to that code under the terms of the GPL. Ultimately, this might mean she can't usefully distribute her own code outside the GPL, if it requires Bob's GPL-licensed components to work correctly. One notable exception to this is that she can distribute the complete project as it existed before Bob made any contributions (i.e., before they were "married").
For reasons such as this, many major projects require contributors to assign copyright to the project so that the legal entity of "the project" can change licenses or undertake legal action as the sole copyright holder without consulting every author who ever contributed.