The answer is yes! You can call...
metawidget.setLayout( myLayout );
...at any time to dynamically update the layout. The questioner was asking in relation to JSF, and the hardest bit in JSF is actually getting programmatic access to the Metawidget. This requires the binding attribute I've blogged about previously.
But once past that, you can put together something like this:
Note the buttons at the buttom that allow you to select which layout to use. I have put together the complete project you can download from here.