I had a boyfriend once that had an habit that went against my customes too. This is how I dealt with it.
First you don't need to feel guilty, maybe he doesn't care about hygine, which btw doesn't sound like you are an extremist, just pretty standard behavior, while he is on the extreme of uncleaness in the modern world, but you do. THAT is how you are, it is part of your personality. You have the right to decide if it is important for you or not.
In my case I had the same problem, I felt maybe I was being too picky. My boyfriend was nice, we got along pretty well. He loved me, and I was willing to lose all that because one thing? Well, even if it is the most stupid thing ever, you have the right to do it. You decide what is important for you. Not someone else. Lets say you let this slide, how are you going to feel in in 2 more years, in 5 years, in 10 years. How are you going to feel when all the other good things may not feel soo good anymore? You are going to feel like you wasted time, like you were stupid for betraying what was important for you, etc.. Think it the other way around, he is willing to push you away because he doesn't want to take a shower and brush his teeth? Is really that much to ask?
If it is not important for you, give it up, and start being not clean also. This is clearly not the case. Maybe you 2 are not compatible. I think it was a red flag that he let you clean everything for him and his friends. As your mom said, you are not his mom, you are partners. Where is he partnering in this whole story? And he even let you clean for his friends? I mean I can understand he being lazy, but he wasn't upset that you had to clean and cook for a bunch of other guys? One thing is doing it once in a while, but the way you describe it, it was like a cleaning job without pay.
A relationship is a partnership. Expecting everything to go perfect all the time, is unrealistic. But it is also unrealistic to think every single human being is compatible with every other single human being. I know it is sad, but it is the way it is.
I don't know if you work and if he works, but depending how much time you guys have available in the day, do you realize it can be considered truly abusive that you have to drive every day 30-40 to cook for him, clean for him and then back to your house where you cook and clean for yourself? I understand if you do it to help him, because he works too many hours and you have more free time. Or because you really like doing it. But you have to be aware that what you are doing there is a lot of work, and he needs to appreciate it. If he can't even be bothered to wash his teeth to kiss you, that is a red flag.
Love yourself, who you are, your values, the way you are with other people. You don't have to feel sorry or guilty for asking him to change something that is causing you a lot of distress. From what you describe you have been more than tolerant and if you have fun with him, I would expect that he is having fun with you. You go out of your way to help him. What does he do for you?
So, why did I say all of this? Well is so you prepare mentally. You can't go and talk to him like who says "I am sorry for being soo annoying and picky". You need to be sure about this. Imagine staying with him for many years without him changing at all, how are you going to feel?
Once you made up your mind and feel totally sure about the importance of him changing this you need to have a talk with him.
Set a time, without other peope to bother you, have a nice relaxing setting. Make sure you will have time and no one is going to show up and interrupt you. If you decide to do it at night, prepare dinner and before eating you discuss it. If the results are unsatisfactory, you leave and since you already cooked you won't feel guilty he won't have anything to eat.
Sit close to him and look at him right in the eyes. It helps if you touch him while you speak, but don't hug him, he is not a child. A light touch here and there or whatever you feel comfortable with. You have to feel close but also there has to be a certain distance. The goal is to make him see you are not judging him, and you love him, and want to be with him. That is why you are sitting close to him. And also that you are serious, that is why you are not smooching. If he tries to derail the conversation getting more phisical stop him. And if he insist leave and tell him you are going to talk more another day. He needs to see you are serious.
Then you say something like (lets say he is called John):
John, I love you, I enjoy spending time with you and I want to keep
doing it. And I think you feel the same for me.
Here is better if he doesn't interrupt, but if he wants to say he does or so. It is ok.
There is something that is really important for me, I think you know
what I mean. I understand you and I are different, you are more
relaxed in certain things and your job makes you get dirty way more
than mine does. I understand that you can't arrive home squeaky clean.
I understand you have some work clothes that are probably going to be
not as clean as I would like it. I truly understand and respect that.
Is important that you don't judge him, he is the way he is, he also has a right to be that way. It is his decision, it is not your place to judge him or change him. That is why you shouldn't say things like "you have a problem with hygine". Because from his point of view, the one with the problem is probably you. You can not change the other person, you can say what is important for you and then, if they want, they can change.
So then you state what you feel. As I usually say in my answers, don't ever use "but" or "however" after anything positive you said. For example if you just said you understand and respect him, if then you say "but xxxx" you are taking away from what you said first. So the next ideas shouldn't be a but, they should be "this is how I feel", he doesn't make you fee things, he does things and you have feelings over those things. This difference is rather important.
I need you to take me seriously on this subject. In this two years we have
been together, I don't feel you have. As I said, I understand we are
different, so please understand me too. When you haven't brushed your
teeth in two days, I don't feel like kissing you, I just can't, and It
kills me because I really love you. When you don't shower after being
out in the country all day, and you are covered in mud and you want to
make love, I don't feel motivated, it makes me feel less attracted to
you. I don't want to feel this way anymore.
The idea here is to describe how what he does makes you feel, without blaming him. He does X you feel Y. What you feel is not his responsability. So you realized he does things that make you feel in ways you don't like. Therefore you communicate this to him and ask him to change otherwise you will have to leave.
Then you ask him if he wants to change:
I realize now that I will always feel this way, if you don't brush
your teeth I won't feel inclined to kiss you and if you don't shower I
won't feel as attracted to you. And I think if we continue this way we
are going to be unhappy and maybe even get to hate each other. I don't
want that. So, I ask you today, do you think you want to change those
things? If you don't want to, if you feel you can't, or that doing
that would be betraying yourself; please tell me. I am not asking you
to change for me. I am asking you to change because you want. If you
don't want it, that is alright, I understand it. I need an honest
answer, don't feel obliged to say you want to change, because as I
said I don't want to start hating each other, and I don't want to be
crying anymore about this. You are my best friend and I want us to
remain friends. So be honest with yourself and with me.
Then you wait to see what he says. It is important that he doesn't do this for you. He has to do it because he wants, otherwise in the future he will say "i did this for you" and he may resent you. That is also why you don't tell him "change or I will leave".
If he says he will change, that he wants to change because he loves you and wants yout o feel attracked to you. Then you tell him that you are glad and you are going to help him change if he wants. For example when he gets home you can start the shower, or whatever. But stop acting like his mom. You can get in the shower with him, the way you help him has to be playful, not like a job or duty. And it shouldn't be every time.
If after a while he doesn't change, leave him, because he won't change and he probably lied so you wouldn't leave him.
If he says he can't change, that he would like to change but he realizes he can't. Then you tell him that you understand and appreciate his honesty because is going to save you both a lot of hardship. You tell him you love him and leave. And since you had dinner ready already you won't feel so bad. Leave right away and tell him you will get in touch with him later to get your stuff. Don't get in touch right away, it is better if you let some time pass so when you talk to him again you won't feel inclined to say "I am sorry lets get together again".
If he later contacts you or when he sees you, he says he is going to change. Well that is up to you to accept. If you accept do as I said above on the option "if he says he will change". Don't let keep going on forever.
If he does change, take into account, that later on he may relapse. If he says he did this because you pushed him to do it, break up. You will have to monitor the relationship, so you don't get stuck forever if he really is not willing to change. I think, with some luck he will want to change because that kind of behavior is going to affect his life in general.
If he doesn't change or want to change, it is not your fault. Don't see it as something wrong in you. That is on him. People don't change for other people, they change for themselves. Just be sure to get closure. Once you decide it is going to be the end, you can give him one retry, like I said above, but only if you really feel like it. Some people break a relationship, but don't give the other people closure. He could say something like "now I can't change but maybe in the future". That is a way to make you wait for him. Don't let that happen. Once is done, be done, close that door and don't expect him to come crawling. Otherwise you will be lovesick forever.
I did this in my relatioship, but my boyfriend really didn't want to change. He told me so later on. I didn't notice that at the time, I realized later on, when it was too late and we had wasted time and the relationship had deteriorated so we couldn't even remain friends. That is why is important that he changes because he wants, not because you ask.