You can insert a suitably low-value current sense resistor in series with the motor supply and measure the voltage drop across it. When the motor is stuck, it will pull its maximum current (stall current) and this should/will be distinct above its normal running current. This is the simpler option to implement.
You can also detect and measure the motor's generated e.m.f. when it is undriven and freewheeling along. That requires the voltage from both motor terminals to each be routed to a potential divider and then measured. If you have a pair of ADC inputs on your Arduino, you could use those with input protection diodes coming off of the potential divider taps. You can remove the motor drive, wait a short while for the motor inductor's back e.m.f. (less than 1 ms - experiment with scope') to die away then read voltage across the motor voltage. When it is moving, the motor will produce a generated voltage. This is the less intrusive option to implement.
Edit: OP posted "This is my motor. It is rated at 6v but I will be running it with my 3v (2xAA) power. Free-run current @ 6V: 40 mA, Stall current @ 6V: 360 mA" 24/04/17
It is hard to say what the stall current will be at 3 V from 6 V data. Treating it as a resistor, which it isn't, then let's look for 200 mA as the threshold for a stall.
The voltage drop across the resistor has to be small enough not to waste excessive motor power but large enough to be separate from noise. Let's say that a stall current should produce a 0.2 V drop across the resistor, just under 7 % of the total motor power at that point. This leads to a 1 ohm resistor. Going worst-case, it could dissipate I2R (0.36 x 0.36 x 1 = 0.1296) W at stall so let's use a 0.5 W resistor for generous and cheap derating of 25 %.
Assuming the Arduino ADC has an FSD of 3.3 V, this 0.2 V is represents a conversion to 15 (15.45) for an 8-bit ADC, to 248 (248.18) for a 12-bit ADC. (You'll know more about your particular Arduino's ADC than me.)
It is sensible to act on a filtered measurement rather than an instantaneous measurement, to reduce susceptibility to noise. This should be fairly easy if the reading it through an ADC as the software can process it. Otherwise a simple hardware RC filter can be implemented but this is less flexible. A combination of the two would be good: a hardware RC filter to remove noise above the ADC's sample rate and a simple digital filter in software.
Therefore the hardware RC filter can have a cut-off frequency of 200 Hz. This leads to a response to a stall in the 10s of ms which should be enough while being less susceptible to motor stutters if the motor load mechanism gets 'sticky'.
From fc = 1/(2 x pi x R x C), we get R = 24,114 with C = 33 nF. Use 22 K and 33 nF.
So your current sense circuit is:
simulate this circuit – Schematic created using CircuitLab
Your digital filter in software is a subject in itself. You can either look up a proper filter algorithm in a suitable text or slap together a rough'n'ready thing to have a try. In the interests of a shorter post, I of course favour the latter. So try taking readings of the motor ADC at 1 ms intervals, maybe on a 1 ms interrupt. Keep a history buffer of the last 64 readings. Every 10 ms (to lighten the load on your CPU), add the last 64 readings together and divide that by 64. That gets you an average of the last 64 samples on 10 ms intervals. Use that to detect the motor overcurrent. (I'm sure someone will tear this to pieces mathematically but it sets up a starting point and a software framework for the OP to experiment from and learn.)