Question: I would be interested in creating a mesh (2D or 3D) to be used in a finite element solver. Does blender have a plugin that can do this? If not, how difficult would it be to write one myself? 

What this plugin should be able to do is 1) partition a mesh into finite elements using some rule, 2) be able to label boundaries and different subdomains somehow and 3) export the mesh in some format that can be read by finite element solver I want to use (in my case, this would be FEniCS).

Answer: 
Well it is easy if you use existing librarys.
The greatest problem is generating a useful mesh for finite element analysis. In this case use the open source mesher "netgen" or "gmsh".
After generating the mesh there are several other openSource tools which can help you with subdomains and boundaries

----Fast manual solution ----
Export the blender file as an stl. 
Then import it in netgen and create a tetrahedral mesh.
After that use FreeCAD or CalculiX for labeling boundaries

---- Automatic solution ----
Use FreeCAD for the automatic import of the blender files and call netgen or gmsh.
If you want to create a shell mesh with mainly quad elements then yes it is possible. Export the blender model in .stl format. Down load, install and run salome FE pre-post processor(IT IS FREE), run, create new session, go into mesh then import .stl as an FE mesh. It will be all triangles so go into : Modification; Union of triangles (NOT UNION OF TWO TRIANGLES) and select the 'minimum angle' option. Hey presto your triangle only mesh is 99.5% quads.
You can export as .dat for Nastran, .unv for Hypermesh or .med for Code Aster. If you have no experience of shell models then bear in mind that the elements should be grouped according to material, thickness and, in the case of Code Aster, loading.