yes, your mix is shit. not trying to be rude but I (and lots of people) run into the same thing all the time.
at home you are not listening to it on monitors with a flat frequency response (like in a real studio) and you are accomidating your speakers, by adding (or subtracting) bass, mids, highs, etc. and messing your mix up. sure it sounds good at home, but in the car, or at a friends house on a stereo it won't sound the same. it will sound alot different, alot better or alot worse. at some point you are going to want to invest in some nice nearfield monitors. these have a flat frequency response, basically they are not bass heavy or dont completely lack the midrange (like my computer speakers). they sound 'true'. they let you really hear how your song sounds and mix based on that.
or you can mix at a real studio (which will cost more money in the long run, but yield much better results until you get really good) and just plan on taking your songs to a studio and paying to track them and mix them with the help of an engineer.