Your problem is known as the biconnectivity augmentation problem. The computational complexity varies according to type of graph (edge weighted, unweighted, directed, undirected). I believe for undirected graphs it is O(V+E)
which is pretty nice. However, the algorithm appears to be quite complicated. If you don't really care about the absolute minimum number of additional edges, you can find the biconnected components fairly easily and just add one extra edge (say in a star pattern) for each biconnected component minus the center of the star. There are still some conditions on adding the edges. See http://www.cs.utexas.edu/~vlr/papers/bi_aug.ps for a discussion. I'm sure there are more up-to-date references but it's hard to find detail for this problem.
I have also found the reference "Simpler and faster biconnectivity augmentation" by Tsan-sheng Hsu, Journal of Algorithms 45, 1, October 2002, pages 55-71. The author characterizes his approach as "very simple". The pseudocode is below.
Input: A graph G = (V , E);
Output: A smallest set of edges aug2(G) such that G ∪ aug2(G) is biconnected;
1. If G has less than 3 vertices or is biconnected, then return ∅.
2. If G is disconnected, then apply Fact 3.2 to find a set of edges E1 such that G ∪ E1 is connected;
otherwise, let E1 = ∅.
3. Find a vertex r in blk2(G ∪ E1) such that blk2(G ∪ E1) rooted at r is normalized.
4. If r is a b-node, then do the following:
(a) Apply Lemma 3.4 on G ∪ E1 to find a set of edges E2.
(b) Return E1 ∪ E2.
5. If r is a c-node, then do the following:
(a) If G ∪ E1 is not balanced, then apply Fact 3.6 on G ∪ E1 to find a set of edges E3 such that
G ∪ E1 ∪ E3 is balanced; otherwise, let E3 = ∅.
(b) Root blk2(G ∪ E1 ∪ E3) at r.
(c) Apply Lemma 3.9 on G ∪ E1 ∪ E3 to find a set of edges E4.
(d) Return E1 ∪ E3 ∪ E4.
Sadly, in order to use it, you need to know all the definitions (b-node, c-node, blk2, Fact 3.6, etc., etc.). Perhaps you can find an implementation somewhere now that you have some keywords.