A demo should be however long it needs to be to hook players but still be within reason. If that's 3-4 hours, it could mean that your demo is showing too much or it could mean that you need to rethink your storytelling.
I played one once where I quit after an hour or so of nothing catching my eye and the dev was like "oh, if you just held on for X more hours it would've gotten really good." LOL nuts to that.
Some of the best demos I've played were pretty short.