For Blender 2.81 and newer mid point snapping for mesh edges is available from the Snap Popover in the 3D View header.
For older versions or whenever the intended mid point is between two different objects or otherwise not over a mesh edge, a possible workaround is to use Blenders Mark Multiple Snap Targets feature to simulate a midpoint.
This is a relatively obscure feature, to use it automatic snapping must be turned on by having the magnet icon active, also make sure set it to Vertex and Closest.
This way while transforming you will no longer need to press Ctrl to snap to other vertex. That leaves you free to press A while inside transform modal operators to "acquire targets" for snapping.
If you hover two different points (at the end of the same edge or even different objects altogether) and press A while each vertex is highlighted, one at a time, it will effectively snap to the midpoint of those two elements.
Before you confirm transform make sure you are hovering no other snap target at all (including the previously selected ones) or it will average the snap midpoint considering those as well.
More about it in Blender Manual