Can I mark unread references?

The recent-developed Bibulous project makes this easy to implement. Taking the OP's example, we have a database file (readtag.bib) in which a readtag field is inserted into each entry:

@article{Brooks2013,
  author = {R. Brooks},
  title = {Surprising fluidic characteristics of dihydrogen monoxide},
  journal = {Journal of Fluidic Chemistry},
  volume = 30,
  month = 7,
  year = 2013,
  pages = {40-52},
  readtag = {{}}
}

@article{Brown1999,
  author = {N. Brown and M. Blum and E. Maruyama and P. Martinez},
  title = {A novel, powerful spectrometric method for evaluating chromaticity},
  journal = {Proceedings of the Royal Astrological Society},
  month = 5,
  year = 1999,
  readtag = {+}
}

@inproceedings{Martinez2012,
  author = {M. Martinez and R. T. Morrison},
  title = {Which one is heavier: Separating facts from fiction},
  booktitle = {17th International Conference of Boring Arguments},
  month = 10,
  year = 2012,
  readtag = {-}
}

Next we can develop a style file (readtag.bst) that makes use of the readtag field:

TEMPLATES:
article = \textbf{[<readtag>]<citenum>}. <au>, <title>. \textit{<journal>}[ <volume>] ([<month.monthabbrev()> ]<year>)[, <startpage>--<endpage>|, <startpage>|, <eid>].
inproceedings = \textbf{[<readtag>]<citenum>}. <au>, <title>. \textit{<booktitle>}[ <volume>] ([<month.monthabbrev()> ]<year>)[, <startpage>--<endpage>|, <startpage>|, <eid>].

SPECIAL-TEMPLATES:
citelabel = (<citenum>)
readtag = -                     ## default tag is "have not read"

OPTIONS:
namelist_format = last_name_first

Finally, we can use the readtag.tex file

\documentclass{article}
\makeatletter
   \renewcommand{\@biblabel}[1]{}
   \renewcommand{\@cite}[2]{{#1\if@tempswa , #2\fi}}
\makeatother

\begin{document}
It has recently been discovered that water is wet\cite{Brooks2013} and the sky is blue\cite{Brown1999}, but it is still controversial whether a pound of iron is heavier than a pound of cotton\cite{Martinez2012}.

\bibliographystyle{readtag}
\bibliography{readtag}
\end{document}

The \renewcommand{\@cite}... line here is used here to allow the citation labels in the text to be different than those in the reference list. Compiling readtag.tex and replacing BibTeX with Bibulous as the bibliography engine gives the resulting formatted reference list

enter image description here


An alternative would be to split your bibliography into three sub-bibliographies, again thanks to biblatex. You filter them with keywords, and add a prefixnumber to every one of them.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=bibtex]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{bib.bib}
@article{Hubert2013,
author={Hubert, Michel},
title={A First Example},
journal={An example of journal},
year=2013,
keywords={to-be-read}
}
@article{Hubert2012,
author={Hubert, Michel},
title={A Second Example},
journal={An example of journal},
year=2012,
keywords={read}
}
@article{Hubert2011,
author={Hubert, Michel},
title={A Third Example},
journal={An example of journal},
year=2011,
keywords={other}
}
\end{filecontents*}
\addbibresource{bib}
\begin{document}
\cite{Hubert2011, Hubert2012, Hubert2013}
\printbibliography[heading=subbibliography,
    title={To be read},
    keyword=to-be-read,
    prefixnumbers=+]
\printbibliography[heading=subbibliography,
    title={Read},
    keyword=read]
\printbibliography[heading=subbibliography,
    title={Not to be read},
    keyword=other,
    prefixnumbers=-]
\end{document}

An example of the output
(source: toile-libre.org)

The bonus point is that you just have to change the keyword to change its citation key.

The bad news is that your bibliography is necessarily slitted into three sub-bibliography.