It looks like cephalo has you covered once you have found the chokepoints, so I'll ramble a bit about finding them.
First, let's cover the crazy corner cases of triple- and quadruple-chokepoints (O is passable, X is impassable, which I think is what you used above, and # is the chokepoint):
XOX ... OXO
X#X ... X#X
OXO ... OXO
This has the standard four rotational versions, and it doesn't happen very often. I see it mostly in the little crab-like peninsulas that SmartMap likes to generate -- even when you choose "Very Round; No Fragments" for the continent shape. Bah!
Because you can move diagonally, the 45 degree rotation of the above is not a triple-chokepoint, though it
is a chokepoint.
OXX
X#O
XOX
* I realized further down that there are more triple cases, but it doesn't matter in the end.
So the main thing I see is that if you start with one "side" of the bridge, there are two places for the tile: the corner or the side
O?? ... ?O?
?#? ... ?#?
??? ... ???
As you rotate around the # from the O starting tile, corners require only one impassable tile before the other end of the bridge while sides require at least two. If the starting end of the bridge is "wider" than 1 tile, simply start from either edge of it.
OOX ... OXA ... A or B can be passable,
O#X ... O#O ... but the Xs cannot
OXO ... BXO
While premature optimization is the root of all evil, it often helps to start there for ideas. If I were going to be testing a lot of map tiles for chokepointedness, I would consider building a table of possible layouts up front.
Conveniently, each tile has 8 adjacent tiles, each being either passable (1) or impassable (0). This gives a table of 256 8-bit adjacent tile passability values. Label the adjacent tile positions 0 through 7 and use them as the bit positions, for example:
012 ... XOO --> 01100010
7#3 ... X#X
654 ... OXX
I went clockwise rather than row-wise so they would be easier to see visually, but it doesn't matter as long as you pick a way and stick with it. Also, I put 0 as the high bit which is backwards but unimportant.
Here you can see that 01100010 is obviously a chokepoint because both impassable runs have at least 2 tiles. In the case where you have a run of a single 0, you'll need to know if it separates two corner tiles (can be a chokepoint) or two side tiles (isn't). In fact, two side tiles with an impassable corner in between can be considered to be a single run of 3 passable tiles.
I did say "ramble" didn't I?
Now you have a way to turn a set of adjacent tiles into a table position by forming a binary number as above, you just need a way to evaluate the 1s and 0s to determine if it's a chokepoint. You could either do this manually (yuck!) for the 32 or so unique cases (32 * 2 mirrors * 4 rotations, total guess) or write an algorithm to do it.
The key is that you only have to build the table once. Then to test a tile, just convert the adjacent tiles' passability to an 8-bit index into the table. The table will simply be an array of 256 booleans.
Wow, I need to get out more.

I hope that was helpful.