#Pyth, 33 bytes#
This is my second attempt on Pyth :)
KJ<z/t@+1*8lz2 2;WnkJ=K+K=JtJ;qKz
Try it online!
How it works:
KJ<z/t@+1*8lz2 2;WnkJ=K+K=JtJ;qKz
z=input()
KJ<z/t@+1*8lz2 2 K=J=z[:(root(1+8*len(z),2)-1)/2]
<z z[:
+1*8lz 1+8*len(z)
@ 2 root( ,2)
t -1
WnKJ while not_equal(k,J):
=K+K=JtJ K=plus(K,J=tail(J))
qKz equal(K,z)