Haskell, 61 58 5656 55 bytes
- -2 bytes thanks to Wheat Wizard ♦
takeWhile(/="">"").evalState(mapM(state.splitAt.(2^))[0..])
It maps (with state) over the infinite sequence of powers of two. Each map step returns the first n characters of the string in the state and puts the remaining in the state. So giving as initial state the string and stop iterating when the result is the empty string, we obtain the result.