Try practicing sit trotting it forces you to sit back and opens your hips to the horses natural movement be sure not to squeeze though
Make sure you stretch your hips alot! If you have a job where you are sitting all day this makes your hip flexors really tight which causes a closed angle and you fall forward. I have seen a huge improvement in my seat by stretching my hips everyday.
I agree with Athene with no stirrups which will help a lot. However, if you are riding with stirrups too long and you are constantly reaching for them this causes your hips to close and for you to unknowingly grip with your thighs and you tip forward. So just as a note you might want to try shortening your stirrups!
I totally agree with Athene! Also when you are riding try to lift your belly button to the sky. I know it sounds odd but this will straighten you out and have you sitting back!
I've had the same problem pretty much the whole time I've been riding. I did lots of no stirrups which really lengthened my leg and I exaggerated leaning back at first I felt stupid and as if I was on the horses bum but really I was in the exact position. It takes a long time to break out the habit of leaning forwards and I'm still not 100% but it's something that once it's fixed it's well worth it :)