An HMAC is basically a "keyed hash". Only the correct message and the correct key will produce a particular hash digest efficiently.
Conceptually speaking, the same can be said for a salted hash; only the correct message and the same salt value will produce a particular hash value efficiently. In fact, the HMAC algorithm is little more than a nested, salted hash, where the salts prepended to the message for each of the two nested hashes is based on a simple derivation of the key.
If a true salt, therefore, were kept secret as a key (or equivalently, if a shared secret symmetric key were used as a salt), it stands to reason that any cryptographic hash primitive would become an effective MAC.
So, I guess two questions naturally follow. First, is that assumption correct? Second, if so, what does the HMAC algorithm get you over the incorporated hash primitive, other than reducing computation speed by half and adding one order of magnitude to the brute-force complexity of finding a preimage message using a constant key (or vice-versa)?