Simple way: upgrade every six months, and follow the -stable branch.
Complex way: Follow -current, upgrade your machines almost constantly.
If you have anything approaching "production", run -stable. Downgrading
is difficult, and sooner or later you'll hit something that makes your
life difficult, like changing a major feature (ipf -> pf) or upgrading
to packages that were built the day the shared library numbers change.
You can do an "unpack the install files over the running OS" upgrade,
that's detailed in the upgrade guide in the FAQ. Better yet, you can
put two machines together with CARP and not have any downtime at all.