There is a reason that your relationship with this fellow has not worked out for reals. Muster up all of your strength and courage and walk away. Find someone, with whom you can have a real relationship, rather than an on again, off again/ infatuation/convenience/unrequitedlove/goodwhen it’s good/bad when it’s bad/goes on for years/never know exactly what it is/easy/feels good when it’s working for a few weeks or months.
This guy is a comfortable (yet unfulfilled) not quite real relationship. Unless something drastic changes with both of you, like going to couples counseling or having a life affirming public (it has to be public or it’s just more of the same old sh*t) revelation of love and comittment, then it’s just the same old rut. Rut after rut after rut.
Find out what you really want. Get some help if you need to, to figure out how to not keep falling for the same old crap from the same old guy (who never really comes through and always leaves in the end). And learn to realize that what you need and want are not necessarily the same thing, and how to learn to love what you need and stop worrying/fretting about some dude that you thought you wanted a long time ago.
As you get older, you will refine your definitions of need and want. This guy, although he might be a nice enough fellow, is not your soul mate or your destiny or even a “good match” for you. If he was, you’d have been with him and settled down/married to him by now.
Sometimes you just have to know when to throw in the towel and look for what you really want/need in a partner. This particular fellow isn’t it. If he was, you wouldn’t be on Fluther asking this question. Sometimes these dudes come around once, twice or even 3 times. And it’s usually when they’re on the re-bound or downtime from some other woman. Don’t even bother with him anymore. You gave it a shot, more than one shot. It didn’t work out. Time to move on and find someone better suited to you. Don’t go backwards, only move forwards.