Without resorting to EditingHistory (which is generally advised agains, and is certainly in opposition to the mercurial "immutable history" design goals) those changes will be in your history forever. You can, however, undo them in your 'tip' revision and then trickle them back in multiple subsequent changesets spread over multiple branches.
Let's imagine this is your current history:
[R0] -> [R1] -> [R2] -> [R3]
Where revisions R2 and R3 have some stuff you wanted in the default branch and some stuff you wish was in a different branch. You can create a new revision, R4, that undoes R2 and R3. That can be done using backout as you suggest, or since you're doing multiple changesets, perhaps more easily using 'revert'.
hg update tip ; hg revert --all -r R2 ; hg commit -m 'undid changes R2 and R3'
then your history will look like this:
[R0] -> [R1] -> [R2] -> [R3] -> [R4]
then you can split your work into the changesets you wish you'd initially done, yielding a history like this:
[R0] -> [R1] -> [R2] -> [R3] -> [R4] -> [R5] -> [R7]
\
--> [R6] -> [R8]
R6 and R8 can be on the branch named 'default' or on a different named branch. Either way, you can push just R0 through R5 and R7 by doing:
hg push -r R7
That works because a push pushes a revision and all of its ancestors -- but R6 and R8 aren't ancestors of R7, so they won't get pushed no matter what branch they're on.