It is possible but difficult, and I have been thinking of a nicer way to do it.
Right now you can use the FFI to export a signal and then import it again directly. This will create a loop.
I'd like to bring this functionality into the language itself with some primitive in the Signal library, but I have not come up with a nice way to do it. I was thinking something like (loop :: a -> Signal a -> Signal a) but you wouldn't be able to actually use it recursively. Perhaps a top-level declaration would be the best way to do it, but I am unsure on syntax for that.
If you create a cycle, it is easy to create an infinite loop, so you'd have to be careful to filter the exported signal to only trigger when it is absolutely necessary. One feature of Elm is that it is impossible to create cycles within the system itself. This is very important for creating programs that terminate, but makes things harder in this case. The ideas above would all introduce an external cycle.