I'm going to use a microcontroller to switch a vehicle horn on and off intermittently for maybe one second on and one off for a period of 15 seconds; the horn will pull an estimated 3 Amps. I know I can do this with either a relay or transistor, but saving space/money is a concern and I'm really just not sure which way to go.
Either will work. A relay has the advantage that it can stand very high transient voltages and won't be disturbed by transients across the contacts.
A suitably rated MOSFET can work too, but you'll probably have to overrate it by quite a bit for it to be reliable. It may need a heat sink if you're operating in under-hood conditions at high ambient temperature (Rds(on) goes up quite a bit with temperature).
The relay is bigger (it will consume a bit more current, but that is immaterial in comparison to the 3A horn), and it will not need a heat sink.
Cost could definitely go either way, depending on quantity etc., so if it's a volume product I suggest pricing it out both ways before you decide.
If it's just a one-off, you can ignore cost and use a huge overkill MOSFET such as an FDH5500 (I'm using this one for a vehicle application). If you feed it 10V at the gate (not directly from the micro, you'll need to step up the voltage), it has an Rds(on) not exceeding 0.01 ohm at 100°C. It won't need a heatsink for a 3A load and has a good chance of blowing a fuse without dying in case of a short. Even so, it's only about $4.50 in singles.
You can use BUZ11 N-MOSFET transistor.
It's a bit overkill (50V, 30A), but at Vgs = 5V you can draw 8A (see transfer characteristic in datasheet).
It has TO-220 package - smaller than typical relays capable to switch 3A current.
You probably won't need heatsink for it at 3A.
It's cheap (I found $3 per 5 pieces on ebay).
Alternatively - you can use 2SK2553 transistor. It's a bit smaller (LDPAK), its capable to transfer higher currents at Vgs = 5V but probably is more expensive.
You can also look at other N-channel mosfets with "logic-level" (you need Vgs < 5V to drive transistor gate directly from microcontroller).
All informations above apply to circuit with 5V (not 3.3V) microcontroller. For 3.3V you need very low Vgs transistor.