Several banks offer various cards and keyfobs, none of them free. The only time I've actually been given such a device free of charge was when I needed it to log into my employer's VPN...
I'm in the UK. My bank provides a little electronic gizmo you stick your bank card in and it gives (different) authentication codes for each time you use online banking. That was free of charge.