High point costs.
That's pretty much it!
They're a very good all-around army, with execellent saves, covering all their bases, a little ordnance, good blast weapons, more than decent in melee.
Their main weakness is the lack of numbers you can fit in a set number of points.
As such, they're vulnerable to theses :
- Blast, high AP weapons (Disintegrators, Warp Blast, Plasma Cannon)
- Small, elite units with power weapons and high ini (Genestealers, Howling Banshees, Bloodletters, Daemonettes)
- Fast, highly specialised close combat units (Winged Hive Tyrant, DE Archon w/ Skyboard, Greater Daemons)
- Powerful ordnance weapons (Battlecannon, demolisher)
- Very high numbers (Gaunts, Rippers, many many lasgun shots)
But I believe that the SM, along with Chaos and Necrons, are the few armies that can kick anybody's ass simply by adapting to the ennemy's army.
The Tyranids, for exemple, can't do that... if an opponent gets a lot of indirect fire ordnance, or blast weapons (Basilisks, or havoc lauchers) and simply fires while moving backwards, the 'nid player will be hard pressed to find an adequate tactic to counter that. Same idea if the ennemy takes 4-5 vehicules - we don't have enough effective anti-armor at long range to adapt to that.
So in a nutshell, the best way to beat a SM user is to take him by surprise by using a good tactic that is not usually used against them - deep striking in their ranks to distract them from the real threat, infiltrating units to harass them (Rangers, 'stealers)
Anything to make sure your actual marine killers can survive long enough to take out the biggest threat in their armies depending on which army YOU play.
Hope it helps!