Muscles don't matter to girls at all , honestly. It's all about personality. If you're too nice though you might be boring or come across as a doormat ... I know that sounds mean ... But the friend zone is real. I like nice guys but I'm not into people who agree with everything I say .. So boring.
Why can't I get a girlfriend. Girls say I'm cute, kind and caring, I'm not muscly but does that matter more than having a nice guy? No girls want to go out with me, why?
I'm more likely to like guys who I'm friends with than who I don't know (actually, I've never liked a guy who's not already a friend), so, my advice to you is to become friends with girls. We're more exciting than we seem. Anyway, why would having a girlfriend matter so much?
Muscles are really not that big of a deal unless you're dealing with a really shallow person. Most girls, fortunately, aren't shallow.
So why is it that you can't get a girlfriend? Well there isn't one simple answer that can explain that. There could be multiple reasons and most of them are most likely out of your control unless you are a truly awful person (but it doesn't seem that you are so good for you!). For instance, the girls you go after may not find you as their type and that's okay. You can't be everyone's type just like not everyone can be your type. It may seem like you are no one's type at the moment but as long as you keep looking and be confident, you'll find someone. I mean there are over 3 billion females on this planet so the odds of you being no one's type is slim. Be patient and keep trying, one day it'll work out.
Also regarding you being a "nice guy", remember that just because you treat girls like their princesses and shower them with gifts and stuff, you should never expect them to owe you. I know a lot of "nice guys" and even "nice girls" who think this way and it's really scary. Your object of affection did not ask for those things so simply giving it to them does not make you entitled to something. For them, it would be like getting charged for food at a restaurant that they didn't order. This doesn't mean that you shouldn't be nice; just keep in mind that your niceness wasn't something that they ordered so you shouldn't charge them for it. In other words, be a nice guy not because you think that it'll get you something or someone, be a nice guy because you want to brighten another person's day.
Also something that Jamie pointed out, if your definition of being a nice guy is to wait hand and foot for your object of affection, it makes you seem desperate. Being a nice guy means that you treat people with the kindness and respect that they deserve without going overboard or asking for anything in return. Sure you can go out of your way to help them out from time to time, but don't be someone who would sacrifice everything just for them and have dignity in yourself.