In this example, (0,0) is part of the boundary; did you perhaps mean (\frac{1}{2},\frac{1}{2})? You can do that as follows:
from dolfin import *
import matplotlib.pyplot as plt
mesh=UnitSquareMesh(4,4)
V = FunctionSpace(mesh, "P" ,1)
bc = DirichletBC(V,Constant(0.0), "on_boundary" )
# Add another BC, where the condition is checked "pointwise":
bc_pt = DirichletBC(V,Constant(0.0),
"near(x[0],0.5) && near(x[1],0.5)",
"pointwise")
bcs = [bc,bc_pt]
f = Constant(1.0)
u = TrialFunction(V)
v = TestFunction(V)
a = dot(grad(u), grad(v))*dx
L = f*v*dx
u_h = Function(V)
solve(a == L, u_h, bcs) # (Note: Changed argument from bc to bcs)
plot(u_h)
plot(mesh)
plt.show()
When applying BCs pointwise, there just needs to be a DoF at the corresponding point (so, (0.7,0.3) would not work in this example).