You can use a special portlet in the admin area (see portal example), to move the windows. It's implemented with the use of arrows, as you've mentioned.
In our project we have a similar need to enable the user to move his portal windows. We are looking forward to new Ajax-enabled features of JBoss portal. But before it's available we have to supply some sensible temporary replacement for that.
In order to achieve this task we took that portlet (from admin page) and added something similar to our user's page.
The only problem is that after triggering the position change, "map" within portlet reflects changes, but actual windows remain on the same positions, until the user relogins. QUESTION: What API function should we call to make changes visible at once, without relogin?
By the way, that portlet from admin page works the same (have to relogin).
Yukon Software Ltd.